Maverick_ 15 3 июня, 2023 Опубликовано 3 июня, 2023 · Жалоба Всем привет не могу придумать как исправить - не производиться запись одного бита Массив данных которые записались - выделил красной скобкой данные котрые я подавал с тестбенча - - выделил красной скобкой в тестбенче - єти данные следующие: constant data0 : std_logic_vector(29 downto 0) := "000000000000000000000000000000"; constant data1 : std_logic_vector(29 downto 0) := "000000000000000000000000000000"; constant data2 : std_logic_vector(29 downto 0) := "000000000000000000000000000000"; constant data3 : std_logic_vector(29 downto 0) := "000000000000000111111111111111"; constant data4 : std_logic_vector(29 downto 0) := "000000011111111000000001111111"; constant data5 : std_logic_vector(29 downto 0) := "000111100001111000011110000111"; constant data6 : std_logic_vector(29 downto 0) := "011001100110011001100110011001"; constant data7 : std_logic_vector(29 downto 0) := "101010101010101010101010101010"; я сравнил побитно одни данные я думаю проблема в 254 строке описания => reg_rx_word(to_integer(unsigned(reg_cnt_word)))(to_integer(unsigned(reg_cnt_bit_word))) <= bit_data; вернее в том как считают счетчики reg_cnt_word и reg_cnt_bit_word я так думаю, но как исправить не могу понять. Прошу помощи Обратите внимание data7 с тестбенча записались коректно у reg_rx_word(0), а далше нет deinterleaver.vhd deinterleaver_vhd_tst.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 июня, 2023 Опубликовано 3 июня, 2023 · Жалоба а ничего что у вас, как минимум, тестбенч не правильный? У вас в нем указано bit_data <= data_all(data_all'high); а это, при слове "101010101010101010101010101010", означает что при первом valid_bit данные bit_data должны быть равны единице а не нулю ЗЫ. Делать valid_bit в поведенческом стиле, а bit_data в RTL, это жуткий моветон Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 3 июня, 2023 Опубликовано 3 июня, 2023 · Жалоба знаю, но время против меня работает... поспешишь людей насмешишь ... исправил в тестбенче на -- valid_bit <= '1'; valid_bit0: process begin valid_bit <= '0'; wait for 60 ns; wait until clk'event and clk = '1'; valid_bit <= '1'; wait for 2405 ns; wait until clk'event and clk = '1'; valid_bit <= '0'; wait; end process; все равно совпадения нет... сейчас Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 3 июня, 2023 Опубликовано 3 июня, 2023 · Жалоба 41 minutes ago, Maverick_ said: все равно совпадения нет... ну я же сказал "как минимум тестбенч не верный", вы немного отдохните, а потом подумайте, почему вы сами портите свое слово) И зачем вообще так сложно делать, с побитным доступом. Набирайте слово на регистре сдвига, потом сразу все слово задвигайте в память. у вас размеры слов же одинаковые. Нужна инверсия порядка бит, ну дык на проводах элементарно делается Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Maverick_ 15 3 июня, 2023 Опубликовано 3 июня, 2023 · Жалоба изменения каснулись в основном тестбенча и исправил ошибку в deinterleaver.vhd реверс бит надо было включить для єлементов массива reg_rx_word и все вроде совпадает, т.е. работает (в симулятор vivado реверс бит встроен) ---- reverse bit order ---------------------------------------------------------- function Reverse(constant X : in std_logic_vector) return std_logic_vector is alias alX : std_logic_vector(X'length - 1 downto 0) is X; variable Y : std_logic_vector(alX'range); begin for i in alX'range loop Y(i) := alX(alX'left - i); end loop; return Y; end; -- example work function: -- a = 01011111100110101; -- b = Reverse(a); -- b = 10101100111111010; --------------------------------------------------------------------------------- des00 спасибо за помощь deinterleaver.vhd deinterleaver_vhd_tst.vhd par2ser.vhd Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
andrew_b 15 4 июня, 2023 Опубликовано 4 июня, 2023 · Жалоба 12 hours ago, Maverick_ said: function Reverse Знакомый код. Где-то я его уже видел... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться