1. Куча / Говнокод #19349

    0

    1. 1
    2. 2
    3. 3
    4. 4
    wire tsun = clk | (~dere);
    wire dere = clk | (~tsun);
    
    always @(posedge clk) rnd <= dere;

    Интересно, будет ли этот код работать как TRNG?

    P.S. Узнаем на выходных, когда приедет Циклоняшка.

    Запостил: bormand, 25 Января 2016

    Комментарии (16) RSS

    • * ц и к л о н я ш к а *
      ц                     ц
      и  Ц А Р С К И Й  ^_^ и
      к                     к
      л  x[i<<1|i^i]=i<<1;  л
      о                     о
      н  x[i<<1|0x1]        н
      я    = i<<1|'8'^'9';  я
      ш                     ш
      к  =^_^=  А Н Р О Л Л к
      а                     а
      * ц и к л о н я ш к а *
      Ответить
      • Держи царский анролл:
        always @(posedge clk)
        begin
            x[0] <= 0;
            x[1] <= 1;
            x[2] <= 2;
            x[3] <= 3;
        end
        Все 4 присваивания сработают одновременно.
        Ответить
        • http://imgur.com/pbR5xGq
          циклоняшка
          Ответить
          • А вот while (1) там записать, походу, не получится. Потока исполнения же нету, как такового. Просто схема в виде проги.
            Ответить
          • http://uk.rs-online.com/images/F7293757-01.jpg
            Ответить
    • Эх блин, циклические зависимости между wire'ами походу недопустимы... Синтезатор скажет, что я жопорукий.
      Ответить
      • Лол. Синтезатор то схавал, зато симулятор повис как только clk занулилось.
        Ответить
    • Что это? Кококод для плис?

      Вот схематехники то любят зацикливать вход на выход тригеров друг на друга и брат жив
      Ответить
      • У схемотехников бывает и такое:
        output = input AND NOT input


        Кто-то скажет, что output = 0 при любом входе? Как бы не так!

        В реальной схеме инвертор переключается с задержкой (пусть в примере это будет наносекунда). Тогда после смены низкого входного сигнала на высокий в течение 1 нс на выходе будет 1 AND 1 = 1 и только спустя 1 нс появится 1 AND 0 = 0.

        Аналогичный выброс напряжения можно поймать и в схеме output = input OR NOT input, но только на переходе с высокого уровня на низкий.
        Ответить
        • Ну да, а если надо импульс подлиннее - можно добавить ещё пару-тройку not'ов. А если написать clk = not not not clk, то получится простейший мультивибратор...
          Ответить
        • Вот кстати, а как такую фигню протащить через всякие оптимизаторы HDL'ей? Они же могут её упростить до output = false и всё испортить...
          Ответить
          • Про ring oscillator: "You can also use it as a controllable heater and make a thermostat out of it."
            Ответить
            • Видимо брат умрёт от перегрева, если из всех ячеек собрать кольцо.
              Ответить
        • Кстати, в альтеровской доке твой пример приведён как пример говнокода :)

          Предлагают вместо этого юзать синхронную логику, чтобы получился аккуратный импульс длиной в 1 тик генератора, а не UB-иголка. Как-то так:
          always @(posedge clk)
          begin
              delayed <= input;
              output <= input and not delayed;
          end
          Ответить
      • > Кококод для плис?
        Ага, UB для плиски. Подбрасываем RS триггер в нестабильное состояние и смотрим, на какую сторону упадёт...
        Ответить
    • Привезли няшку. Надеюсь, всё-таки осилю их IDE.
      Ответить

    Добавить комментарий