- 1
- 2
- 3
- 4
wire tsun = clk | (~dere);
wire dere = clk | (~tsun);
always @(posedge clk) rnd <= dere;
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
0
wire tsun = clk | (~dere);
wire dere = clk | (~tsun);
always @(posedge clk) rnd <= dere;
Интересно, будет ли этот код работать как TRNG?
P.S. Узнаем на выходных, когда приедет Циклоняшка.
циклоняшка
Вот схематехники то любят зацикливать вход на выход тригеров друг на друга и брат жив
Кто-то скажет, что output = 0 при любом входе? Как бы не так!
В реальной схеме инвертор переключается с задержкой (пусть в примере это будет наносекунда). Тогда после смены низкого входного сигнала на высокий в течение 1 нс на выходе будет 1 AND 1 = 1 и только спустя 1 нс появится 1 AND 0 = 0.
Аналогичный выброс напряжения можно поймать и в схеме output = input OR NOT input, но только на переходе с высокого уровня на низкий.
Предлагают вместо этого юзать синхронную логику, чтобы получился аккуратный импульс длиной в 1 тик генератора, а не UB-иголка. Как-то так:
Ага, UB для плиски. Подбрасываем RS триггер в нестабильное состояние и смотрим, на какую сторону упадёт...