Question

Comment envoyer des données représentées par une chaîne binaire (par exemple, "01011101000100111", longueur est variable) à un signal std_logic avec un retard fixe ou un signal d'horloge? Je veux ceci pour un banc d'essai, donc je voudrais pouvoir changer arbitrairement la chaîne binaire avec le moins de tracas possible, alors je pense utiliser generate .

Était-ce utile?

La solution

Je présente humblement une version à délai fixe (c’est du code testbench, après tout ...). J'ai vérifié cela et ça marche, mais je suis plus à l'aise dans Verilog, donc ce code n'est peut-être pas le plus beau VHDL de tous les temps ...

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

Autres conseils

Pour ajouter à la réponse de Marty:

Pour le rendre cadencé, modifiez attend 10 ns; s sur attendez jusqu’au lever_edge (clk);

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top