Например TDA7294

Форум РадиоКот • Просмотр темы - Не работает цикл For на верелог
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Сб дек 27, 2025 18:53:55

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 5 ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: Не работает цикл For на верелог
СообщениеДобавлено: Чт мар 06, 2014 22:52:05 
Родился

Зарегистрирован: Пт сен 02, 2011 13:42:30
Сообщений: 13
Откуда: г.Москва
Рейтинг сообщения: 0
Хочу заменить
Код:
         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


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает цикл For на верелог
СообщениеДобавлено: Пт мар 07, 2014 07:58:45 
Мудрый кот
Аватар пользователя

Карма: 24
Рейтинг сообщений: 286
Зарегистрирован: Чт июн 10, 2010 08:55:35
Сообщений: 1810
Откуда: Сибирские Афины
Рейтинг сообщения: 0
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;

Копайте в этом направлении.

Удачи.

_________________
Когда уже ничего не помогает - прочтите, наконец, инструкцию.
Лучший оптимизатор находится у вас между ушей. (Майкл Абраш, программист Quake и QuakeII)
Избыток информации ведёт к оскудению души - Леонтьев А. (сказано в 1965 г.)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает цикл For на верелог
СообщениеДобавлено: Пт мар 07, 2014 17:00:19 
Родился

Зарегистрирован: Пт сен 02, 2011 13:42:30
Сообщений: 13
Откуда: г.Москва
Рейтинг сообщения: 0
Всё равно что то не так использование массива ситуацию не улучшает ругается отладчик. Ещё не понятно регистр SR и регистры sr_out это разные регистры или это один переименованный в разные. Ведь тогда SR должен быть определен массивом наверное.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Не работает цикл For на верелог
СообщениеДобавлено: Ср мар 19, 2014 22:03:34 
Родился

Зарегистрирован: Пт сен 02, 2011 13:42:30
Сообщений: 13
Откуда: г.Москва
Рейтинг сообщения: 0
Ковырял я его долго но оказалось должно быть так а ещё не получалось из за не правельного тестбэнча.

Код:
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


Вернуться наверх
 
Эиком - электронные компоненты и радиодетали
Не в сети
 Заголовок сообщения: Re: Не работает цикл For на верелог
СообщениеДобавлено: Вс мар 23, 2014 16:07:39 
Родился

Зарегистрирован: Пт сен 02, 2011 13:42:30
Сообщений: 13
Откуда: г.Москва
Рейтинг сообщения: 0
Проблема оказалась даже не в тестбэнче.
Код который я писал становясь не нужным был за коментирован и что то пошло не так.
Написано правильно а не работает. Только когда перенёс и очистил от кометтариев в новый файл всё заработало. Где могла сохраниться проблема в старом тексте.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 5 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y