Como gerar sinal de série de corda?
Pergunta
Como faço para enviar dados representados por uma cadeia binária (por exemplo "01011101000100111"
, comprimento é variável) a um sinal std_logic dada atraso fixos ou sinal de relógio? Eu quero isso para um testbench para que eu gostaria de ser capaz de mudar arbitrariamente a cadeia binária com tão pouco incómodo possível, por isso estou pensando em usar generate
.
Solução
Eu humildemente presente uma versão de atraso fixo (é testbench código depois de tudo ...). Eu verifiquei isso e ele funciona, mas eu estou mais confortável em Verilog de modo que este código não pode ser o VHDL mais bonita sempre ...
--
-- 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;
Outras dicas
Para adicionar a resposta está bem Marty:
Para torná-lo cronometrado, alterar as wait for 10 ns;
s para wait until rising_edge(clk);