BloomJack 0 6 декабря, 2018 Опубликовано 6 декабря, 2018 (изменено) · Жалоба Столкнулся с проблемой, задача проста: вход 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 fir данные защелкиваются каждый такт CLK, а r_matrix через такт.... Изменено 6 декабря, 2018 пользователем BloomJack Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 6 декабря, 2018 Опубликовано 6 декабря, 2018 · Жалоба Приветствую! А как меняется число бит в fir слове при сдвиге на каждом такте (сразу после ресета)? Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BloomJack 0 6 декабря, 2018 Опубликовано 6 декабря, 2018 · Жалоба 5 minutes ago, RobFPGA said: Приветствую! А как меняется число бит в fir слове при сдвиге на каждом такте (сразу после ресета)? Удачи! Rob. Rob Благодарю! день мучался, 2литра кофе слил... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 6 декабря, 2018 Опубликовано 6 декабря, 2018 · Жалоба 37 minutes ago, BloomJack said: день мучался, 2литра кофе слил... уххх, а сколько еще предстоит =)) у меня столько бессонных ночей за последний год =)) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BloomJack 0 7 декабря, 2018 Опубликовано 7 декабря, 2018 (изменено) · Жалоба еще вопрос, у меня выходная шина 40 бит, как мне наложить маску чтобы при 0 было Z состояния порта, а при 1 оставалась так же единица? чтото типа signal_out = (test_sig ? 1'bz : 1'b0); ? Изменено 7 декабря, 2018 пользователем BloomJack Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 7 декабря, 2018 Опубликовано 7 декабря, 2018 · Жалоба Приветствую! 13 minutes ago, BloomJack said: еще вопрос, у меня выходная шина 40 бит, как мне наложить маску чтобы при 0 было Z состояния порта, а при 1 оставалась так же единица? чтото типа signal_out = (test_sig ? 1'bz : 1'b0); ? Да так же как вы для для бита написали (только с инверсией условия) - Ну а биты перебирать в цикле. А цикл соответственно спрятать в яйце в ларце функции или на дереве genrate блока. Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvlwork 0 7 декабря, 2018 Опубликовано 7 декабря, 2018 · Жалоба signal_out = test_sig ? {40{1'b1}} : {40{1'bz}}; Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BloomJack 0 7 декабря, 2018 Опубликовано 7 декабря, 2018 · Жалоба 17 minutes ago, dvlwork said: signal_out = test_sig ? {40{1'b1}} : {40{1'bz}}; шикарная запись! В какой книге такие "фишки" описываются не помните? 28 minutes ago, RobFPGA said: Да так же как вы для для бита написали (только с инверсией условия) логичное решение, согласен! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dvlwork 0 7 декабря, 2018 Опубликовано 7 декабря, 2018 · Жалоба 7 минут назад, BloomJack сказал: В какой книге такие "фишки" описываются не помните? IEEE Std 1364-2001 sec. 4.1.14 Concatenations p. 51. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BloomJack 0 7 декабря, 2018 Опубликовано 7 декабря, 2018 (изменено) · Жалоба 1 hour ago, dvlwork said: signal_out = test_sig ? {40{1'b1}} : {40{1'bz}}; z состояние в такой конструкции без цикла устанавливается для всех бит сразу если все они были равны 0. МОделер так сказал. Перепроверяю. Изменено 7 декабря, 2018 пользователем BloomJack Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 27 7 декабря, 2018 Опубликовано 7 декабря, 2018 · Жалоба 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
BloomJack 0 7 декабря, 2018 Опубликовано 7 декабря, 2018 · Жалоба 1 hour ago, RobFPGA said: Но увы - хоть битовая операция 1'bz | 1'b1 = 1'b1 но вот 1'bz | 1'b0 = 1'bx (а не 1'bz) - обломс :( Удачи! Rob. Вы абсолютно правы!... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться