문자열에서 직렬 신호를 생성하는 방법?
문제
이진 문자열로 표시된 데이터를 어떻게 보내나요 (예 : "01011101000100111"
, 길이는 가변적입니다) 고정 지연 또는 시계 신호가 주어진 std_logic 신호에? 나는 테스트 벤치를 위해 이것을 원하기 때문에 가능한 한 번거 로움으로 바이너리 스트링을 임의로 변경할 수 있기를 원하므로 사용하려고 생각하고 있습니다. generate
.
해결책
고정 지연 버전을 겸손하게 제시합니다 (결국 테스트 벤치 코드입니다 ...). 나는 이것을 확인했고 그것이 작동하지만, Verilog에서 더 편안 하므로이 코드는 가장 멋진 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;
다른 팁
Marty의 훌륭한 대답에 추가하기 위해 :
시계를 만들려면 변경하십시오 wait for 10 ns;
s to wait until rising_edge(clk);
제휴하지 않습니다 StackOverflow