日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

FPGA参数定义 regwire 详解

發布時間:2023/12/16 编程问答 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 FPGA参数定义 regwire 详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在寫FPGA代碼進行參數類型定義時,對于寫reg還是wire常常叫人迷惑,下面我將分為以下三種情況,詳細解釋如何定義參數類型

目錄

一 、輸入輸出定義

二 、例化定義

三 、 仿真定義


一 、輸入輸出定義

輸入輸出定義是指,在寫程序的時候,向各個程序模塊里面輸入和輸出某些參數,例如下面的流水燈程序,PLL,time,water_led三個模塊分別有不同的輸入輸出

針對這種情況應該這樣定義

input 都為wire型

output 若在always塊下定義為reg型,寫作output reg xxxxx

(不加reg默認wire,不用寫output wire xxxx)

(原因:在設計中,輸入信號一般來說你是不知道上一級是寄存器輸出還是組合邏輯輸出,那么對于本級來說就是一根導線,也就是wire型。而輸出信號則由你自己來決定是寄存器輸出還是組合邏輯輸出,wire型、reg型都可以。always塊下面進行賦值時,參數相當于被寄存器寄存,所以需要寫reg型)

二 、例化定義

這種情況是指,top層匯總各個模塊時進行的例化,如上面的圖就是system上需要例化PLL,time,water_led三個模塊

針對這種情況應該這樣定義:

首先top層的輸入和輸出依然按照上面的定義方法寫

不包含在輸入輸出里的參數(如上面的圖就是clk_25m,locked,time_en)挑出來,寫wire型

(原因:例化時,可以把里面的參數都當做信號線,只有連接作用)

三 、 仿真定義

這種情況是指在寫TB文件的時候進行參數定義

首先說一下寫TB文件的過程,TB文件可以測試小模塊也可以測試top層,比如我要測試time模塊,那么我就需要把time模塊的輸入輸出復制到TB文件里面,也就是module后面的(....);

復制過去按照例化的步驟進行例化

先將模塊里面為input的變量寫reg型,為output的變量寫wire型

(注意不要忘寫位寬,reg[ x:x]? wire[ x:x])

但是有些時候會報錯,所以按照上面的方法寫完之后需要進行一些檢測修改:

TB文件里面的參數在initial進行賦值的寫reg型,其他的寫wire型

?然后就沒有問題了


輸入輸出定義,例化定義,仿真定義已經幾乎包含了FPGA里面所有的參數定義情況,按照我上面的方法定義不會有問題,下面來介紹一下原理:

Verilog 中變量的物理數據分為線型和寄存器型,線型數據包括wire,wand,wor等幾種類型,其中wire最常用,對應于實際的數字電路,線型wire實際上就對應著硬件的連線,起到連接作用。寄存器是存儲單元的抽象,寄存器數據類型的關鍵字是reg。常用來表示always模塊內的指定信號,代表觸發器。在always模塊內被賦值的每一個信號都必須定義成reg型。

所以reg相當于存儲單元,wire相當于物理連線

在需要賦值計算的時候就用reg,只是連接作用就用wire

總結

以上是生活随笔為你收集整理的FPGA参数定义 regwire 详解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。