| Форум РадиоКот https://radiokot.ru/forum/ |
|
| Не работает цикл For на верелог https://radiokot.ru/forum/viewtopic.php?f=60&t=101436 |
Страница 1 из 1 |
| Автор: | leonem [ Чт мар 06, 2014 22:52:05 ] |
| Заголовок сообщения: | Не работает цикл For на верелог |
Хочу заменить Код: assign sr_out = sr[7:0]; assign sr_out1 = sr[15:8]; assign sr_out2 = sr[23:16]; assign sr_out3 = sr[31:24]; на assign sr_out[i] = sr[i*8-1:(i-1)*8]; но к сожалению это не получается не понимаю почему Код: module counter (
shift, clk, sr_in, sr_out, sr_out1, sr_out2, sr_out3, sr_out4 ); input shift,clk; input wire [7:0]sr_in; output [7:0]sr_out,sr_out1,sr_out2,sr_out3,sr_out4; reg [31:0]sr; always @ (posedge clk) if (shift ==1 ) sr <= { sr[23:0],sr_in }; parameter SIZE = 4; genvar i; generate for (i=1; i <= SIZE; i=i+1) begin: bit assign sr_out[i] = sr[i*8-1:(i-1)*8]; end endgenerate |
|
| Автор: | Kavka [ Пт мар 07, 2014 07:58:45 ] |
| Заголовок сообщения: | Re: Не работает цикл For на верелог |
leonem писал(а): Хочу заменить Код: assign sr_out = sr[7:0]; assign sr_out1 = sr[15:8]; assign sr_out2 = sr[23:16]; assign sr_out3 = sr[31:24]; на assign sr_out[i] = sr[i*8-1:(i-1)*8]; но к сожалению это не получается не понимаю почему Ох, уже слабо помню те обрывки Verilog-а, что когда-то пытался освоить. Но и без этого видно, что вы пытаетесь подставить "цифирку", мягко говоря не так. Вы подставляете её в имя "вектора" - тут оно так не работает. Иначе говоря, вам нужен двумерный массив. Код: output [7:0]sr_out,sr_out1,sr_out2,sr_out3,sr_out4; Вот это не массив, это отдельные "вектора" по 8 бит. Могу предположить, что вам надо вот такое определение (не уверен про синтаксис). Код: output [3:0][7:0]sr_out; Копайте в этом направлении. Удачи. |
|
| Автор: | leonem [ Пт мар 07, 2014 17:00:19 ] |
| Заголовок сообщения: | Re: Не работает цикл For на верелог |
Всё равно что то не так использование массива ситуацию не улучшает ругается отладчик. Ещё не понятно регистр SR и регистры sr_out это разные регистры или это один переименованный в разные. Ведь тогда SR должен быть определен массивом наверное. |
|
| Автор: | leonem [ Ср мар 19, 2014 22:03:34 ] |
| Заголовок сообщения: | Re: Не работает цикл For на верелог |
Ковырял я его долго но оказалось должно быть так а ещё не получалось из за не правельного тестбэнча. Код: module counter (
shift, clk, sr_in, sr_out, sr_out1, sr_out2, sr_out3, sr_out4 ); input shift,clk; input wire [7:0]sr_in; output [7:0]sr_out,sr_out1,sr_out2,sr_out3,sr_out4; reg [3:0]counte=4'b0; reg [7:0] sr [3:0]; integer n; reg [7:0]v =8'h57; reg [7:0]a; wire c; always @(posedge clk) if (shift ==1) begin if(counte==4'd4) counte <= 4'b0; else counte <= counte + 1'd1; for (n = 0; n<4; n = n+1) begin sr[0] <= sr_in; sr[n] <=sr[n-1]; $display("%d",n,sr[n]); end end assign c = counte == 4'd4; assign sr_out = sr[0]; assign sr_out1 = sr[1]; assign sr_out2 = sr[2]; assign sr_out3 = sr[3]; always @ (posedge clk) if(c==1) begin a <= v+ sr[2]; $display("%d",n,a); end initial $monitor($stime,, shift,, clk,,,sr_out,sr_out1,a, sr_in ); endmodule |
|
| Автор: | leonem [ Вс мар 23, 2014 16:07:39 ] |
| Заголовок сообщения: | Re: Не работает цикл For на верелог |
Проблема оказалась даже не в тестбэнче. Код который я писал становясь не нужным был за коментирован и что то пошло не так. Написано правильно а не работает. Только когда перенёс и очистил от кометтариев в новый файл всё заработало. Где могла сохраниться проблема в старом тексте. |
|
| Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
| Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |
|


