¿Cómo generar una señal serial desde un string?
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
.
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);