0
我正在用VHDL寫一個指定的UART組件。如何在VHDL的進程中生成「tick」?
send: process(send_start)
variable bit_index : integer range 0 to 2 := 0;
begin
if (falling_edge(send_start)) then
if (start = '0' and transceiver_start = '1') then
bit_index := 0;
end if;
transceiver_start <= '1';
if (bit_index = 0) then
temp_data <= data.RE;
bit_index := 1;
transceiver_start <= '0';
delay_counter <= 0;
elsif (bit_index = 1) then
temp_data <= data.IM;
bit_index := 2;
transceiver_start <= '0';
end if;
end if;
end process;
信號的下降沿觸發子組件運行。我想觸發兩次,但我不知道如何產生第二個下降沿。
我想過使用一個併發進程,它會在delay_counter
達到一定限制後基本上將transceiver_start
信號重置爲hi狀態。因此我可以在send
進程中再次將其關閉以產生下降沿。然而,這使得我有兩個驅動程序爲delay_counter
信號,並且我讀到具有分辨率功能不是合成的良好實踐(此代碼需要可合成)。
有沒有什麼辦法讓我生成bit_index = 1
?