0
我有一個關於VHDL的問題。 我使用FPGA驅動RGB LED矩陣 我有兩個主要實體:驅動器和收集器 驅動器用於發送信號到LED矩陣 收集器用於收集輸入信號(來自Android設備)並在將這些信號發送到DIRVER之前相應地分割它們vhdl信號在需要之前生成得更快
問題是,在收集器中生成的用於驅動LED矩陣的信號產生的速度比驅動程序能夠接受的要快。 你如何解決信號在需要之前產生的問題?
我有一個關於VHDL的問題。 我使用FPGA驅動RGB LED矩陣 我有兩個主要實體:驅動器和收集器 驅動器用於發送信號到LED矩陣 收集器用於收集輸入信號(來自Android設備)並在將這些信號發送到DIRVER之前相應地分割它們vhdl信號在需要之前生成得更快
問題是,在收集器中生成的用於驅動LED矩陣的信號產生的速度比驅動程序能夠接受的要快。 你如何解決信號在需要之前產生的問題?
你的問題沒有提到你是否在一個鐘控過程中運行o不是。如果你正在使用組合邏輯(沒有計時),那麼你就受到路由延遲的束縛,並且你被卡住了。
我打算假設你正在使用時鐘進程。在這種情況下,您應該嘗試使用移位寄存器來延遲一個信號'n'個時鐘週期。
-- <...usual entity/architecture preamble...>
constant CLOCK_DELAYS : natural := 10;
signal sreg : std_logic_vector(CLOCK_DELAYS - 1 downto 0);
begin -- start of RTL
process(clk)
begin
if rising_edge(clk) then
sreg <= sreg(CLOCK_DELAYS - 2 downto 0) & i_signal;
end if;
end process;
o_signal <= sreg(CLOCK_DELAYS - 1);
您的代碼到目前爲止可能會給這裏更多的提示。關於這個問題:如何爲收集器和驅動器提供一個時鐘信號,並且只在時鐘邊沿同步它們的信號。 – EngJon
「在需要之前生成」和「生成速度快於驅動程序可以接受它」可能是兩個不同的事情。你是否需要延遲它,或者你是否比生成數據更快地生成數據(即速率/吞吐量問題,這會更嚴重)? – fru1tbat
如果傳入數據突發傳輸,但傳入和傳出帶寬隨時間平均匹配,則可以考慮使用[FIFO](http://en.wikipedia.org/wiki/FIFO)。 –