Перейти к содержанию
    

[VERILOG] Вопросы начинающего

Столкнулся с проблемой,  задача проста:

вход 1 бит -> преобразователь в параллельный код 40 бит -> преобразование в унарный(термо) код 40 бит.

Проблема в том что на временной диаграмме идет пропуск тактирования для переноса значения из параллельного в унарный код.

Не пойму причину...

always @(negedge clk)
begin
	r_matrix <= unary(fir);
end


 always @(posedge clk or posedge rst)   
    begin
      if (rst)               
			begin
			fir[N-1:0] <= 40'b1010101010101010101010101010101010101010;
			end
      else
			begin
					if (dsd == 0)   	
					begin 
					fir <= (fir << 1);  
					end
					else 
					begin
					fir <= (fir << 1) + 1'b1;
					end
			end
 end

endmodule

image.thumb.png.5b2cf9652cdfc54a23cf26e610c2fadb.png

fir данные защелкиваются каждый такт CLK, а r_matrix через такт....

 

Изменено пользователем BloomJack

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

А как меняется число бит в fir слове при сдвиге на каждом такте :wink2: (сразу после ресета)? 

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

5 minutes ago, RobFPGA said:

Приветствую!

А как меняется число бит в fir слове при сдвиге на каждом такте :wink2: (сразу после ресета)? 

Удачи! Rob.

:dash2::biggrin: Rob Благодарю! день мучался, 2литра кофе слил...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

37 minutes ago, BloomJack said:

 день мучался, 2литра кофе слил...

уххх, а сколько еще предстоит =)) у меня столько бессонных ночей за последний год =)) 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

еще вопрос, у меня выходная шина 40 бит, как мне наложить маску чтобы при 0 было Z состояния порта, а при 1 оставалась так же единица?

 

чтото типа signal_out = (test_sig ? 1'bz : 1'b0); ?

Изменено пользователем BloomJack

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Приветствую!

13 minutes ago, BloomJack said:

еще вопрос, у меня выходная шина 40 бит, как мне наложить маску чтобы при 0 было Z состояния порта, а при 1 оставалась так же единица?

 

чтото типа signal_out = (test_sig ? 1'bz : 1'b0); ?

 

Да так же как вы для для бита написали (только с инверсией условия) - Ну а биты перебирать в цикле. А цикл соответственно спрятать в яйце в ларце функции или на дереве genrate блока. :bye:

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

17 minutes ago, dvlwork said:

signal_out = test_sig ? {40{1'b1}} : {40{1'bz}};

шикарная запись! В какой книге такие "фишки" описываются не помните?

 

28 minutes ago, RobFPGA said:

Да так же как вы для для бита написали (только с инверсией условия)

логичное решение, согласен!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, BloomJack сказал:

В какой книге такие "фишки" описываются не помните?

IEEE Std 1364-2001  sec. 4.1.14 Concatenations  p. 51.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, dvlwork said:

signal_out = test_sig ? {40{1'b1}} : {40{1'bz}};

z состояние в такой конструкции без цикла устанавливается для всех бит сразу если все они были равны 0. МОделер так сказал. Перепроверяю.

Изменено пользователем BloomJack

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

10 minutes ago, BloomJack said:

z состояние в такой конструкции без цикла устанавливается для всех бит сразу если все они были равны 0. МОделер так сказал. Перепроверяю.

Естественно для всех бит - так как тут нет проверки  отдельных бит в test_sig. Это эквивалентно 

signal_out = (test_sig[39:0]!=0) ? {40{1'b1}} : {40{1'bz}};

А TC хотел бы что типа такого
// signal_out = {40{1'bz}} | test_sig[39:0];

Но увы - хоть битовая операция  1'bz | 1'b1 = 1'b1  но вот 1'bz | 1'b0 = 1'bx (а не 1'bz) - обломс :(

Удачи! Rob.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, RobFPGA said:

Но увы - хоть битовая операция  1'bz | 1'b1 = 1'b1  но вот 1'bz | 1'b0 = 1'bx (а не 1'bz) - обломс :(

Удачи! Rob.

Вы абсолютно правы!...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...