verilog常用語法二讓您的FPGA設計更輕鬆

2022-01-05 FPGA開源工作室

收錄於話題 #FPGA學習 40個

verilog常用語法一讓您的FPGA設計更輕鬆

   一般情況下,Verilog HDL源程序中所有的行都將參加編譯。但是有時希望對其中的一部分內容只有在滿足條件才進行編譯,也就是對一部分內容指定編譯的條件,這就是「條件編譯」。有時,希望當滿足條件時進行編譯,而當條件不滿足是則編譯另一部分。

用verilog的generate語句可以實現條件編譯功能,這個功能類似於c語言中的#ifdef語句。

示例:

  當 USE_REG == 1 的時候,fpga  map的紅色框電路,當 USE_REG == 0時,FPGA map的藍色框電路。

  示例:

 

{KSZ{1'b0}}為位寬為KSZ的數字0。

在FPGA開發過程中,獲得某些信號的上升沿和下降沿是至關重要的,從信號的上升沿或下降沿就可以判斷信號的起始有效。

示例:

 

仿真平臺:

 

Vs_rise_flag 和vs_fall_flag分別是vsync信號的上升沿和下降沿標誌。

仿真波形:

如上圖所示,紅色的圓圈表示vsync的上升沿,紅色正方形框表示vsync的上升沿標誌;藍色的圓圈表示vsync信號的下降沿,藍色框表示vsync的下降沿標誌。

推薦閱讀:

歡迎加入FPGA開源工作室QQ資料群

每一位科技工作者都需要支持

相關焦點

  • verilog常用語法一讓您的FPGA設計更輕鬆
    verilog常用語法一讓您的FPGA設計更輕鬆作者:lee神1
  • 通過點燈的邏輯體驗FPGA的編程流程以及Verilog語法基礎
    作為「寒假在家一起練」的第二次直播講座,我們今天就基於1個LED做了1個多小時的分享,從創建第一個FPGA項目、寫下第一句Verilog代碼,到調用FPGA的IP Cores,體驗了FPGA的設計流程以及Verilog的基本語法規範。
  • 零基礎學FPGA(五)Verilog語法基基礎基礎(下)
    (3)函數和任務都包含在設計層次中,可以通過層次名對他們實行調用。這句話什麼意思啊?  (3)時間度量系統函數$time  在verilog hdl語法中有兩種時間度量系統函數,分別是$time和$realtime,用這兩個系統函數可以得到當前的仿真時刻。$time可以返回一個64位的值來記錄當前的仿真時刻。  (4)$finish  系統任務$finish的作用是退出仿真器,返回主作業系統,也就是結束仿真過程。
  • 零基礎學FPGA-Verilog語法中
    (1)順序快    順序快就好比C語言裡的大括號「{    }」,在Verilog語法中,用begin…end代替。這裡只需要知道,在begin…end中間的語句是順序執行的就行了。if(al==1) q=d;         else   q=0;    end同樣在case語句中也要加上default語句避免鎖存器的生成,這樣可以使設計者更加明確的設計目標
  • 基於FPGA的任意分頻器設計
    儘管目前在大部分設計中還廣泛使用集成鎖相環(如Altera的PLL,Xilinx的DLL)來進行時鐘的分頻、倍頻以及相移設計,但是,對於時鐘要求不太嚴格的設計,通過自主設計進行時鐘分頻的實現方法仍然非常流行。首先這種方法可以節省鎖相環資源,再者這種方式只消耗不多的邏輯單元就可以達到對時鐘的操作目的。
  • FPGA程式語言——verilog語法
    Verilog HDL行為描述語言作為一種結構化和過程性的語言,其語法結構非常適合於算法級和RTL級的模型設計。這種行為描述語言具有以下功能:(1)、可描述順序執行或並行執行的程序結構。語法 if ... else ...
  • 零基礎學FPGA(四)Verilog語法基基礎基礎(中)
    (1)順序快  順序快就好比C語言裡的大括號「{ }」,在Verilog語法中,用begin…end代替。這裡只需要知道,在begin…end中間的語句是順序執行的就行了。  (2)並行塊  並行塊可以算是一個新的知識點,與順序塊最大的不同就是並行塊中的語句是同時開始執行的,要想控制語句的先後順序,可以加延時語句控制。
  • 細談FPGA之Verilog HDL語法(一)
    前面淺談了一下FPGA(淺談FPGA),有人希望能繼續分享,那麼今天就來簡單講講FPGA的描述語言——Verilog HDL的語法,語法內容比較多
  • 零基礎教你學FPGA之Verilog語法基礎(下)
    本文承接《零基礎教你學FPGA之Verilog語法基礎(中)》  9、關於任務和函數的小結,
  • Verilog開源仿真工具Icarus Verilog的工作原理
    編譯編譯就是從接收命令行參數開始,到預處理(verilog宏展開,文件include,條件編譯),Verilog語法解析(關鍵字識別、語法解析),最後轉換成內部的數據結構(就是用各種class、結構體,如module、net、scope、generate、statement、expression等)的過程。簡單的講,就是實別Verilog文件,轉成內部的資料庫。
  • 零基礎學FPGA(三)Verilog語法基基礎基礎(上)
    這幾天複習了一下Verilog的語法知識,就藉此寫寫我對這些東西的想法吧。感覺呢,是和C語言差不多,具有C語言基礎的朋友學起來應該沒什麼問題,和C語言相同的地方就不說了吧,重點說一下不同點吧。本文引用地址:http://www.eepw.com.cn/article/267551.htm  1、模塊的結構  模塊呢,是Verilog的基本設計單元,它主要是由兩部分組成,一個是接口,另一個是邏輯。
  • 基於FPGA的m序列信號發生器設計
    圖3 FPGA功能模塊方案框圖  3設計核心之綜合與仿真  3.1時鐘模塊設計  在所有基於FPGA的設計中,設計滿足設計要求的時鐘信號對設計成敗起著至關重要的作用滿足在本文所設計的m序列信號發生器的時鐘信號輸出頻率為:20 MHz、20 kHz、40 kHz、60 kHz、80 kHz、100 kHz.輸出的時鐘信號在modelsim 6.5f中的仿真波形如圖4所示。從圖4中可以看出,時鐘模塊性能滿足設計要求,設計正確。
  • 零基礎教你學FPGA之Verilog語法基礎(上)
    感覺呢,是和C語言差不多,具有C語言基礎的朋友學起來應該沒什麼問題,和C語言相同的地方就不說了吧,重點說一下不同點吧。  1、模塊的結構  模塊呢,是Verilog的基本設計單元,它主要是由兩部分組成,一個是接口,另一個是邏輯。
  • 開源仿真工具Icarus Verilog中的verilog parser
    下圖是gpref輸入文件截圖,可以看到裡面定義了verilog關鍵字、版本、類型的表。flex和bison來分析Verilog語法再來看看lexor.lex和parse.y,前者是詞法分析,後者是語法分析。
  • Verilog HDL常用的仿真知識
    現在驗證大多是基於UVM平臺寫的systemverilog,然而我並不會sv,不過我會使用verilog進行簡單的驗證,其實也就是所謂的仿真。這裡就來記錄一下一些驗證的基礎吧。①綜合中的語法,都適用於仿真,在仿真中,Verilog語句是串行的,其面向硬體的並行特性則是通過其語義(語言含義)來實現的,因此並不會丟失代碼的並行含義和特徵。
  • FPGA學習筆記:前言+Verilog HDL語法基礎
    設計人員可以通過在現場完成對這些邏輯塊和互連線的配置,以實現或改變複雜的電子系統的功能。 ·FPGA在結構、速度、工藝、集成度和性能等方面都有極大的提高,與之相對應的設計方法和自動化設計工具也得到迅速的發展。
  • (轉載)如何學習FPGA
    然後你可以選擇verilog或者VHDL,有C語言基礎的,建議選擇VHDL。因為verilog太像C了,很容易混淆,最後你會發現,你花了大量時間去區分這兩種語言,而不是在學習如何使用它。當然,你思維能轉得過來,也可以選verilog,畢竟在國內verilog用得比較多。       接下來,首先找本實例抄代碼。
  • 3G系統中AGC的FPGA設計實現
    agc在系統中的位置如圖1虛線框所示:    3 agc系統的fpga實現    根據agc所實現的功能  ,在fpga中將agc模塊分為如下幾個部分來實現:  3.1 數據幹路模塊    從RSP接口來10位二進位補碼數據I1和Q1,與求指數模塊傳送來的預放大增益
  • ​verilog相關基礎知識
    對於verilog基礎知識,這裡做簡單的介紹,對於已經熟悉verilog語言的讀者可以省略不看此部分。
  • 優秀的 Verilog/FPGA開源項目介紹(五)- USB通信
    網站上的文檔:1-usbcorev項目地址❝https://github.com/avakar/usbcorev❞項目簡介該IP可以將全速 (12Mbps) USB 2.0 設備內核嵌入到 FPGA 設計中。