Pregunta

¿Cómo envío los datos representados por una cadena binaria (por ejemplo, " 01011101000100111 " , la longitud es variable) a una señal std_logic dada ya sea un retardo fijo o una señal de reloj? Quiero esto para un banco de pruebas, así que me gustaría poder cambiar arbitrariamente la cadena binaria con la menor molestia posible, así que estoy pensando en usar generar .

¿Fue útil?

Solución

Presento humildemente una versión con retardo fijo (después de todo es un código de banco de pruebas ...). He comprobado esto y funciona, pero estoy más cómodo en verilog, por lo que este código puede no ser el VHDL más agradable que haya existido ...

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

Otros consejos

Para agregar a la fina respuesta de Marty:

Para hacerlo cronometrado, cambie el espere 10 ns; s para espere hasta rising_edge (clk);

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top