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.

Foi útil?

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);

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top