2011-05-12 32 views
2

我在理解Simulink(Xilink Library)中定時信號的概念時遇到了一些麻煩。Xilinx Simulink中定時信號的理解

我會用一個例子解釋,

假設你有一個串行比特流,你想借奇數之和偶數位元,

所以,你可能會寫MATLAB代碼是這樣的:

Data_Bits=[1 2 3 0 4 5 1 2 0 9]; 

Sum_Bits=[]; 
for i=1:length(Data_Bits)/2 
    Sum_Bits=[Sum_Bits Data_Bits(2*i-1)+Data_Bits(2*i)] 
end 

假設一會兒,我們忽略了所有的優化和邊角情況,這些代碼可能無法工作。

假設我們必須在硬件中實現此功能,Data_Bits將會連續發送,因此您基本上需要等待2個時鐘週期才能獲得2個輸入位並將其添加並生成輸出。

因此,每2個時鐘週期就有一個輸出。

因此,有可能在賽靈思中管理定時信號,以便我們獲得有效的輸出。

所以我不希望有一箇中間結果在輸出。

我們該如何做到這一點?我正在考慮在自由運行的時鐘(計數器)中使用某種啓用輸入。

但是我們在設計一個真正複雜的系統時如何管理這個?

我沒有太多的硬件設計經驗。所以,如果我的問題與SIMPLE危險接近並且是愚蠢的,那麼我對我的智力感到抱歉。

感謝閱讀

基蘭

回答

2

如果你希望你的輸出到唯一的變化時,它是「有效」,您使用的是啓用寄存器在與連接東西的使能信號,它是高單個時鐘週期同時輸出引腳因爲進入寄存器的值是您想要在輸出端顯示的值。在您的情況下,您的「有效」信號在交替時鐘週期內在「1」和「0」之間切換,因此您可以使用觸發器,通過反相器輸出反饋。 (在davidd的代碼中,你可以在//tflipflop的行中看到這一點)。

如果你有一個更復雜的系統,這是唯一的一次有效的n週期,你可以使用每n週期復位計數器,並使用復位脈衝作爲一個「有效」信號。

+0

感謝您的詳細解釋。感謝您抽出時間向我解釋。我會在我的模型中嘗試這個。 – Kiran 2011-05-16 12:49:27

0
Input stream -------------> AddSub -> register -> output stream 
Input stream -> register -> AddSub register 
             register 
          counter -> register(enable) 

添加的輸入流,並通過1個週期延遲的輸入流。使用1位計數器(或T觸發器)在加法器的輸出端啓用一個寄存器。

這是你在找什麼?

此外,在運行復雜系統時,「管理」這個是什麼意思?這個結構的verilog或vhdl非常簡單,可以用來代替系統發生器模塊。

//note: initialization/reset and limit handling is not included and would need to be considered. 
[email protected](posedge clk) 
begin 
    databits_1dly <= databits; //create a once cycle delayed version of databits 
    sum <= databits_1dly + databits; //adder 
    every_other <= !every_other //t flip flop. 
    if (every_other) //invert if you want the other every_other 
     sum_every_other <= sum 
end 
+0

嗨, 感謝您的回覆。我現在對時序信號和同步有了很好的理解。 謝謝 – Kiran 2011-05-16 12:51:01