FPGA開發之--Verilog中的位移指令

  FPGA開發比較複雜,其中的重點是時序設計。關於複雜時序設計,其中重點中的重點就是時序分析,設計狀態機。在設計狀態機的過程中就將整體的時序在頭腦中有一個大概的劃分。狀態轉換,狀態內部的時序設計。有個高手講過一句話,我覺得是很有道理的。時序是設計出來的,不是仿真仿出來的。一個時序邏輯的設計,如果開始沒有一個整體的規劃。上來就開始寫代碼,只會陷你於萬劫不復之境地。

  邏輯時序設計要求你對整個系統有一個大的規劃,對每個模塊,接口進行科學的定義。整體邏輯模塊的劃分,將有助於對邏輯的分割。更加詳細和細緻的理解整個功能模塊的設計原理和定義。首先是在稿紙上進行詳細的設計,畫出整體的框圖。

  在代碼設計階段,一定要求是根據你的原理設計框圖進行代碼設計。如果有修改,得在原理圖上標明。代碼設計階段主要關注幾個點。一個是代碼的可綜合性,還一個就是綜合後寄存器路徑是否過長,寄存器的扇入和扇出係數是否超過了器件的最大允許值,這些都將影響整個電路的設計性能。對於一般情況,綜合一次對,一次不對,的情況都是因爲設計的代碼時序約束不過關。線延遲,建立保持時間不夠等。這裏可以引入一個設計方法,那就是用軟件進行靜態時序分析。對關鍵路徑通過時序約束文件進行約束。對於時序報告文件中不能滿足時序約束條件的關鍵路徑進行電路的從新設計。

  對於阻塞和非阻塞賦值是一個比較難理解的點,所謂阻塞賦值,帶有延遲的賦值。非阻塞賦值,就是立即賦值。兩個在出現結果的情況下面來講,就是阻塞賦值在時鐘沿過來了,是順序執行的,而非阻塞賦值就是直接全部都並行執行。

  在verilog中有兩種方式進行位移,其中的第一方式就是"<<"," >>"左右移位,但是在實際設計過程中。我使用reg類型的數據變量沒法移位,根據靜態時序分析得出的結果是寄存器路徑過長。後面修改爲a={a,1‘b0}在實際工程中通過。說明在工程中位拼接指令能夠更好的綜合。

  


發佈了41 篇原創文章 · 獲贊 46 · 訪問量 26萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章