Как генерировать последовательный сигнал из строки?

StackOverflow https://stackoverflow.com/questions/1808347

  •  05-07-2019
  •  | 
  •  

Вопрос

Как отправить данные, представленные двоичной строкой (например, "01011101000100111" , переменная длина), в сигнал std_logic с фиксированной задержкой или тактовым сигналом? Я хочу это для тестового стенда, поэтому я хотел бы иметь возможность произвольно изменять двоичную строку с как можно меньшими хлопотами, поэтому я подумываю использовать generate .

Это было полезно?

Решение

Я скромно представляю версию с фиксированной задержкой (в конце концов, это код тестового стенда ...). Я проверил это, и это работает, но мне удобнее в verilog, так что этот код может быть не самым хорошим VHDL когда-либо ...

--
-- Clocking out bitstream
--

library ieee;
use ieee.std_logic_1164.all;

entity stackoverflow_strings is
end stackoverflow_strings;

-- this is testbench code, so we can use "wait"s inside a "for" loop.
architecture rtl of stackoverflow_strings is
signal my_output : std_ulogic;
begin

shift_data : process is
constant my_bits : std_logic_vector := B"100101010000100010101";
begin
   my_output <= '0';
   wait for 10 ns; 
   for i in my_bits'range loop
      my_output <= my_bits(i);
      wait for 10 ns;
   end loop; 

   wait;
end process shift_data;

end rtl;

Другие советы

Чтобы добавить к хорошему ответу Марти:

Чтобы сделать это синхронизированным, измените ожидание на 10 нс; s на ожидание восходящего_строка (clk);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top