2014-05-23 65 views
0

我有一個關於VHDL的問題。 我使用FPGA驅動RGB LED矩陣 我有兩個主要實體:驅動器和收集器 驅動器用於發送信號到LED矩陣 收集器用於收集輸入信號(來自Android設備)並在將這些信號發送到DIRVER之前相應地分割它們vhdl信號在需要之前生成得更快

問題是,在收集器中生成的用於驅動LED矩陣的信號產生的速度比驅動程序能夠接受的要快。 你如何解決信號在需要之前產生的問題?

+0

您的代碼到目前爲止可能會給這裏更多的提示。關於這個問題:如何爲收集器和驅動器提供一個時鐘信號,並且只在時鐘邊沿同步它們的信號。 – EngJon

+0

「在需要之前生成」和「生成速度快於驅動程序可以接受它」可能是兩個不同的事情。你是否需要延遲它,或者你是否比生成數據更快地生成數據(即速率/吞吐量問題,這會更嚴重)? – fru1tbat

+0

如果傳入數據突發傳輸,但傳入和傳出帶寬隨時間平均匹配,則可以考慮使用[FIFO](http://en.wikipedia.org/wiki/FIFO)。 –

回答

0

你的問題沒有提到你是否在一個鐘控過程中運行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);