Lutovid 0 8 сентября, 2016 Опубликовано 8 сентября, 2016 · Жалоба Всем привет! подскажите пожалуйста как сокраить запись в Verilog(не так давно на нем пишу, сейчас решение ищу сам< но вдруг здесь быстрее ответят) Есть такая запись case (rx_mtyout2_d)//shrink invalid bytes 4'd0 : begin for(i=0;i<16;i=i+1) begin if(i==0) fifo_data_10b[i*10+160*2 +: 10] <= {2'b01, rx_dataout2_d[i*8 +: 8]}; else fifo_data_10b[i*10+160*2 +: 10] <= {2'b11, rx_dataout2_d[i*8 +: 8]}; end end 4'd1 : begin for(i=0;i<16;i=i+1) begin if(i<1) fifo_data_10b[i*10+160*2 +: 10] <= {2'b00, 8'h00}; else if(i==1) fifo_data_10b[i*10+160*2 +: 10] <= {2'b10, rx_dataout2_d[i*8 +: 8]}; else fifo_data_10b[i*10+160*2 +: 10] <= {2'b11, rx_dataout2_d[i*8 +: 8]}; end end 4'd2 : begin for(i=0;i<16;i=i+1) begin if(i<2) fifo_data_10b[i*10+160*2 +: 10] <= {2'b00, 8'h00}; else if(i==2) fifo_data_10b[i*10+160*2 +: 10] <= {2'b10, rx_dataout2_d[i*8 +: 8]}; else fifo_data_10b[i*10+160*2 +: 10] <= {2'b11, rx_dataout2_d[i*8 +: 8]}; end end ////////////////////////////////////etc endcase Тут есть зависимость результата от номера кейса - я вижу что-то типа case (rx_mtyout2_d)//shrink invalid bytes for(k=0; k<N; k=k+1) k : begin for(i=0;i<16;i=i+1) begin if(i<k) fifo_data_10b[i*10+160*2 +: 10] <= {2'b00, 8'h00}; else if(i==k) fifo_data_10b[i*10+160*2 +: 10] <= {2'b10, rx_dataout2_d[i*8 +: 8]}; else fifo_data_10b[i*10+160*2 +: 10] <= {2'b11, rx_dataout2_d[i*8 +: 8]}; end end Как это записать правильно? Вроде нашел: for(k=0; k<N; k=k+1)begin if(rx_mtyout2_d==k)begin for(i=0;i<16;i=i+1) begin if(i<k) fifo_data_10b[i*10+160*2 +: 10] <= {2'b00, 8'h00}; else if(i==k) fifo_data_10b[i*10+160*2 +: 10] <= {2'b10, rx_dataout2_d[i*8 +: 8]}; else fifo_data_10b[i*10+160*2 +: 10] <= {2'b11, rx_dataout2_d[i*8 +: 8]}; end end end end Осталось понять эквивалентно ли это тому что написано выше с точки зрения синтезатора Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться