Domanda

Come posso inviare i dati rappresentati da una stringa binaria (ad es. " 01011101000100111 " , la lunghezza è variabile) a un segnale std_logic dato un ritardo fisso o un segnale di clock? Lo voglio per un banco di prova, quindi vorrei poter cambiare arbitrariamente la stringa binaria con il minor fastidio possibile, quindi sto pensando di usare generate .

È stato utile?

Soluzione

Presento umilmente una versione a ritardo fisso (dopo tutto è codice testbench ...). Ho controllato questo e funziona, ma mi sento più a mio agio in Verilog quindi questo codice potrebbe non essere il VHDL più bello di 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;

Altri suggerimenti

Per aggiungere alla bella risposta di Marty:

Per renderlo sincronizzato, modifica aspetta 10 ns; s in aspetta fino rising_edge (clk);

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top