Comment envoyer des données représentées par une chaîne binaire (par exemple, "01011101000100111"
, longueur variable) à un signal std_logic donné soit par un délai fixe, soit par un signal d'horloge? Je veux cela pour un banc d'essai, donc je voudrais être en mesure de modifier arbitrairement la chaîne binaire avec aussi peu de tracas que possible, donc je pense à utiliser generate
.Comment générer un signal série à partir d'une chaîne?
1
A
Répondre
2
Je présente humblement une version à retard fixe (c'est du code testbench après tout ...). J'ai vérifié cela et il fonctionne, mais je suis plus à l'aise dans Verilog si ce code ne peut être la plus belle VHDL jamais ...
--
-- 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;
0
Pour ajouter belle réponse Marty:
Pour faire il a cadencé, changer le wait for 10 ns;
à wait until rising_edge(clk);
C'est en fait bien fait, esp. si vous êtes plus Veriloggy :) Nuggle pédant - je changerais le nom d'architetcure de RTL bien - ce n'est clairement pas une description de RTL! –