最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

FPGA學(xué)習(xí)筆記day4

2023-04-03 15:49 作者:崔崔TV  | 我要投稿

這節(jié)課學(xué)習(xí)聯(lián)合仿真

怎么理解聯(lián)合仿真?好像就是把仿真軟件和開發(fā)環(huán)境聯(lián)系到一起去

首先在quartus里面找到tools,option

然后在這里找一下modelsim的安裝路徑

然后去quartus的assignments里面選擇一下settings,在這里設(shè)置一下

然后還有下面的這個simulation,作用:在把tb文件寫好之后,需要在這里添加tb文件

可以把1ps改成1ns

然后在下面點(diǎn)擊testbench,然后點(diǎn)new,添加tb文件。以前寫tb文件都是需要正兒八經(jīng)的自己敲,這里有一個工具可以生成一個模板:

點(diǎn)完了之后,下面會提示你這個:

意思就是他成功的在你的par下面創(chuàng)建了一個simulation文件夾

打開可以看到里面有個后綴名.vt的文件

打開看一下

里面有很多沒有用的注釋,去掉即可

然后在相應(yīng)位置添加幾行代碼就行了

這個模板生成的文件,module的名字會加一個vlg_tst,不要忘了,剛才有一個添加tb文件的步驟,new什么的,在那里添加的名字是這個module的名字,而不是tb文件的名字

然后點(diǎn)ok

就可以了,有的時候仿真不通過主要存在兩個可能性

一個是文件名沒整對

一個是本身quartus編譯就沒通過

一個是quartus程序里面的時序?qū)Ψ抡嫦到y(tǒng)來說太慢了,比如流水燈,一秒鐘變一次狀態(tài)。但是仿真里面都是以ns為單位的。所以觀察不到變化。改改程序就完事了。


速學(xué)verilog

又開始講fpga,過一遍吧

HDL:hardware description language硬件描述語言

常見的有verilogHDL和VHDL

verilog歷史:

verilog與C語言的區(qū)別:

學(xué)一下基本語法:

1、基礎(chǔ)知識:

2、數(shù)字進(jìn)制格式:

需要注意一點(diǎn),這個我不知道,就是這個位寬實際上指的是二進(jìn)制數(shù)的位寬。參見csdn的一個文章的解釋:

3、標(biāo)識符

用于定義模塊名、端口名、信號名,可以是任意一組字母、數(shù)字、$、下劃線,第一個字符必須是字母或者下劃線。標(biāo)識符區(qū)分大小寫。

建議:命名信號的時候最好讓他有一定的含義

4、數(shù)據(jù)類型

寄存器數(shù)據(jù)類新給,線網(wǎng)數(shù)據(jù)類型、參數(shù)數(shù)據(jù)類型

reg。wire。parameter


reg:表示一個抽象的數(shù)據(jù)存儲單元,通過賦值語句可以改變寄存器存儲的值,reg數(shù)據(jù)類型的初始值默認(rèn)為不定值X

reg類型數(shù)據(jù)只能在always和initial語句中被賦值。

若always里面帶有時鐘信號,則該寄存器變量對應(yīng)為觸發(fā)器

若always里面沒有時鐘信號,則該寄存器變量對應(yīng)位硬件連線


wire:表示結(jié)構(gòu)實體之間的物理連線。這種的變量不能存儲值,他的值是由驅(qū)動它的原件決定的。

驅(qū)動線網(wǎng)類型變量的元器件有門、連續(xù)賦值語句、assign等

如果沒有驅(qū)動原件連接到線網(wǎng)類型的變量上,則該變量就是高阻的,值為z

線網(wǎng)數(shù)據(jù)類型包括wire和tri型,wire較為常用


parameter:就是個常量,有點(diǎn)像C里面的define,我們可以一次定義多個參數(shù),參數(shù)與參數(shù)之間需要用逗號隔開,每個參數(shù)定義的右邊必須是一個常數(shù)表達(dá)式。

參數(shù)型數(shù)據(jù)類型常用于定義狀態(tài)機(jī)的狀態(tài),數(shù)據(jù)位寬、延遲大小。采用標(biāo)識符來代表一個常量,可以提高可讀性。


5、運(yùn)算符

1算數(shù)運(yùn)算符:

模除其實就是求余數(shù)

2關(guān)系運(yùn)算符

3邏輯運(yùn)算符

4條件操作符

eg:result=(a>=b)?a:b

功能等同于always中的if-else語句。a是判斷條件,bc是執(zhí)行語句


5位運(yùn)算

6移位運(yùn)算

7拼接運(yùn)算符

舉例子:

優(yōu)先級:


6、verilog注釋

和C一樣

//和/*


7、verilog關(guān)鍵字

常用的:


8、verilog程序框架

基本設(shè)計單元是模塊(C的基本單元是函數(shù))一個模塊由兩個部分組成,一部分描述接口,一部分描述邏輯功能

每個verilog程序包括4個主要部分:

端口定義,IO說明,內(nèi)部信號聲明,功能定義

端口定義:就是block后面,括號里面那些。

IO說明:input、output

功能定義:

assign是給線網(wǎng)數(shù)據(jù)類型的變量賦值的一種方法。之前說了wire這個東西不能直接存儲變量,是需要其他東西驅(qū)動的。

功能定義部分有三種方法:

1、assign語句

2、always語句

3、例化實例元件

這個例化其實昨天寫tb文件的時候領(lǐng)教過了,還有一種新的方式:

不推薦這種

以這個為例.sys_clk(sys_clk)

這個.+變量(變量)的含義就是括號外面那個變量名,是被調(diào)用的子模塊中的變量名。括號里面那個變量,就是要賦值給這個“被調(diào)用的子模塊中的變量名”的值。


然后來學(xué)結(jié)構(gòu)語句、賦值語句、條件語句

1、結(jié)構(gòu)語句

initial和always語句

initial語句在模塊中只執(zhí)行一次,常用于測試文件的編寫(tb),用來產(chǎn)生仿真測試信號,或者用于對存儲器變量賦初值

always語句一直在不斷地重復(fù)活動,但是只有和一定的時間控制結(jié)合在一起才有用。這里的時間控制可以是沿觸發(fā),也可以是電平觸發(fā)。可以是單個信號,也可以是多個信號。多個信號中間要用關(guān)鍵字or連接。

2、賦值語句

阻塞賦值:b=a

非阻塞賦值:b<=a

也就是說這里給出來的值是a=b=c=0

就是說這里的賦值過程是一個一個按照順序來的

非阻塞則是并行執(zhí)行的

3、條件語句

if語句

條件語句必須再過程塊中使用,也就是initial和always語句。

而且上述的表達(dá)式好像并不需要針對同一個對象。比方說右邊那個,表達(dá)式1可能說的是A的事,但是表達(dá)式2可以說B的事。

注意:

case語句(就類似switch)

casez:比較時不考慮表達(dá)式中的高阻值

casex:比較時不考慮高阻值和不定值


最后學(xué)狀態(tài)機(jī)

狀態(tài)機(jī)概念,狀態(tài)機(jī)模型,狀態(tài)機(jī)設(shè)計

應(yīng)用場景:

狀態(tài)機(jī)state machine

有限狀態(tài)機(jī)(Finite state machine)在有限個狀態(tài)之間按照一定規(guī)律轉(zhuǎn)換的時序電路


狀態(tài)機(jī)模型:

mealy狀態(tài)機(jī)

這個其實就是數(shù)電里面學(xué)的那個東西。就是時序邏輯電路。狀態(tài)轉(zhuǎn)換圖。

這個摩爾和米利其實也學(xué)過,在數(shù)電書里面講過,我去找找——數(shù)電書262頁


狀態(tài)機(jī)設(shè)計:

step1:狀態(tài)空間定義

兩部分工作,第一部分:把各個狀態(tài)用不同的二進(jìn)制數(shù)編碼。第二部分:定義兩個reg變量:現(xiàn)態(tài)和次態(tài)。需要注意的是,這兩個部分的位寬需要對應(yīng)上。

step2:狀態(tài)跳轉(zhuǎn):

在時序邏輯中必須使用非阻塞賦值


step3:下個狀態(tài)判斷(組合邏輯)

組合邏輯要用阻塞賦值

latch是一個鎖存器,會使得最后輸出的毛刺較多,影響時序分析。所以最好if和else要配對。case和default(還有endcase)配對


step4:各個狀態(tài)的動作(組合邏輯)

組合邏輯,用阻塞賦值


看個例子

always @ (*) begin含義

狀態(tài)機(jī)的最后可以再加一個輸出寄存器(時序邏輯)

作用:

完事

晚上做做第一個實驗


FPGA學(xué)習(xí)筆記day4的評論 (共 條)

分享到微博請遵守國家法律
修文县| 临汾市| 武宁县| 福鼎市| 伊吾县| 通州区| 浪卡子县| 湖北省| 清镇市| 青田县| 福贡县| 十堰市| 平昌县| 西青区| 松滋市| 汉沽区| 台北县| 桦甸市| 杭锦旗| 常德市| 嘉义县| 喀喇沁旗| 咸丰县| 泸州市| 临桂县| 龙门县| 天峨县| 文昌市| 蒙山县| 田林县| 江口县| 德格县| 兴宁市| 景德镇市| 襄垣县| 菏泽市| 张掖市| 犍为县| 广水市| 宣恩县| 涿州市|