سؤال

وكيف أقوم بإرسال البيانات تمثيل سلسلة ثنائي (على سبيل المثال "01011101000100111"، هو طول متغير) إلى إشارة std_logic تعطى إما تأخير ثابت أو إشارة على مدار الساعة؟ أريد هذا لtestbench لذلك كنت تريد أن تكون قادرة على تغيير تعسفا السلسلة الثنائية مع مشاحنات أقل قدر ممكن، لذلك أنا أفكر في استخدام generate.

هل كانت مفيدة؟

المحلول

وأقدم بتواضع نسخة تأخير الثابتة (هو هو رمز testbench بعد كل شيء ...). لقد راجعت هذا ويعمل، ولكن أنا أكثر راحة في فيريلوج حتى هذا الرمز قد لا يكون اجمل VHDL من أي وقت مضى ...

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

نصائح أخرى

لإضافة إلى الإجابة مارتي الجميلة:

لجعله مسافة السباق، تغيير wait for 10 ns;s إلى wait until rising_edge(clk);

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top