Добро пожаловать, Гость
Логин: Пароль: Запомнить меня

ТЕМА:

Re: Вопросы по языку Verilog 12 года 7 мес. назад #2371

Хотел спросить насчет сдвигового регистра я взял на сайте альтеры пример но он что то не заработал
www.altera.com/support/examples/verilog/verilog.html
www.altera.com/support/examples/verilog/ver-1x64-shift-reg.html
module shift_1x64 (clk,
shift,
sr_in,
sr_out,
);

input clk, shift;
input sr_in;
output sr_out;

reg [63:0] sr;

always@(posedge clk)
begin
if (shift == 1'b1)
begin
sr[63:1] <= sr[62:0];
sr[0] <= sr_in;
end
end

assign sr_out = sr[63];

endmodule
Тут есть какие то тонкости он не заполняет данными регистр и не передает данные на вывод и данные он должен выводить сразу как они обновились или в конце когда полностью заполнен регистр [63:0] sr;
Пример простой но почемуто не работает. Хотя что то похожее видел в примерах у других.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 7 мес. назад #2372

Вход shift должен быть установлен в 1 чтобы регистр заработал.
Перые 64 такта на выходе будут нули, а скорее всего "мусор", поскольку не используется сигнала сброса, который установит все биты сдвигового регистра в 0.
К сожалению я новичок в Verilog, т.ч. если ошибусь, надеюсь, меня поправят. На выходе всегда значение бита 63 сдвигового регистра. Обновлются данные по тактовому импульсу clk. Разумеется, если вход shift установлен в 0, то данные обновляться не будут, как и не будет обновляться сдвиговый регистр.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 7 мес. назад #2380

Тест бэнч я написал на shift 1 подал и регистр обнулил подал первые 8 бит 0. Правда регистр уменьшил до 31 и данные подал 1раз на 31бит программа проверки gtkwave показала все Х в регистре
но данные не были записаны в регистр. Вы считаете данные надо подовать по кругу и за второй проход они запишутся. "На выходе всегда значение бита 63 сдвигового регистра"- Это означает что данные будут
выведены разом в этот регистр или с каждым тактом будет происходить заполнение? Но разом это наверно не возможно.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 5 мес. назад #2545

всем привет!
парни, подскажите по работе одного куска кода, сижу час не могу понять в чем дело.
always@(posedge clk)
begin
if(counter<=width) 
    out <=1'b1;
else 
    out <=1'b0;
	 
counter<=counter+1'd1;

if(counter>=18'd195312)
	counter=18'b0;
	$display("%d",counter[17:0]);
end

как только counter досчитывает до 195312, я хочу его сбросить в 0. причем в 0 он сбрасывается.
но при новом клоке CLK, counter считается дальше))) бррр, как так-то? может знатоки подскажут, почему и что с этим делать? спасибо)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 5 мес. назад #2546

Скорее всего причина в том, что Вы смешали блокирующее и неблокирующее присваивания регистра counter
Спасибо сказали: kraftig

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от alman.

Re: Вопросы по языку Verilog 12 года 5 мес. назад #2548

точно, нигде такого не встречал, но буду иметь это в виду, спасибо))

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 4 мес. назад #2551

Подскажите - перерыл все мегафункции в Quartus'е, так и не нашёл реализацию SPI, мне необходимо на EPM3000 или EPM240.
Спасибо.
"Холодает" - подумал Волк и натянул Красную Шапочку по самые уши...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 4 мес. назад #2552

kraftig пишет: точно, нигде такого не встречал, но буду иметь это в виду, спасибо))


Ещё смущает вот такой код:
if(counter<=width)

Честно говоря, не настолько хорошо знаю Верилог, но на всякий случай поменял бы на
if(width > counter)

конструкция <= в условии смущает.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Вопросы по языку Verilog 12 года 9 ч. назад #2766

привет всем!
не получается простой счетчик: во время переключения счетчика он переходит в неопределенное состояние!?
В компиляторе и симуляторе не одного предупреждения!


module ram_counter
(
  input  wire clk,
  output reg[15:0] ram_addr
);

 
always @(posedge clk) begin                       
  ram_addr <= ram_addr + 16'b0000000000000001;
end

endmodule
Вложения:

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от wss60.

Re: Вопросы по языку Verilog 11 года 11 мес. назад #2768

wss60 пишет: привет всем!
не получается простой счетчик: во время переключения счетчика он переходит в неопределенное состояние!?
В компиляторе и симуляторе не одного предупреждения!


module ram_counter
(
  input  wire clk,
  output reg[15:0] ram_addr
);

 
always @(posedge clk) begin                       
  ram_addr <= ram_addr + 16'b0000000000000001;
end

endmodule

Да у вас все идеально сделано. У меня часто такая чепухня присутствовала при симуляции: задержек между ячейками не избежать, но на реальном железе такой выброс не существенен, возможно он даже до выхода не дойдет.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.963 секунд
Работает на Kunena форум