0****1
時(shí)序邏輯電路設(shè)計(jì)方法
時(shí)序邏輯電路的特點(diǎn)是輸出信號(hào)不僅與電路的輸入有關(guān),還與電路原來(lái)的狀態(tài)有關(guān)。
因此,電路需要具有記憶功能的存儲(chǔ)電路。FPGA中基本的存儲(chǔ)單元是D觸發(fā)器,也是實(shí)現(xiàn)時(shí)序邏輯的基本單元。
那么,什么樣的語(yǔ)句會(huì)被綜合成觸發(fā)器呢?在Verilog中,常使用always進(jìn)程塊描述時(shí)序邏輯。此時(shí),always進(jìn)程塊中的敏感列表一般為時(shí)鐘邊沿和異步控制信號(hào),
** always ** @(posedge clk,posedge rst)
always進(jìn)程塊的執(zhí)行是在時(shí)鐘邊沿觸發(fā)下進(jìn)行的。
時(shí)序邏輯電路按狀態(tài)變化的特點(diǎn),可以分為同步時(shí)序邏輯電路和異步時(shí)序邏輯電路。
同步時(shí)序邏輯電路的各個(gè)觸發(fā)器狀態(tài)的轉(zhuǎn)換在同一時(shí)鐘脈沖作用下完成。目前,大多數(shù)數(shù)字電路都是同步時(shí)序電路。我們實(shí)驗(yàn)中所涉及到的也都是同步時(shí)序電路。
在設(shè)計(jì)時(shí)需要注意,所有always敏感列表中第一項(xiàng)敏感信號(hào)應(yīng)該為同一時(shí)鐘信號(hào),比如,都為系統(tǒng)時(shí)鐘clk的上升沿。

不出現(xiàn)其他派生信號(hào),比如,系統(tǒng)時(shí)鐘產(chǎn)生的分頻信號(hào)等等。

異步時(shí)序邏輯電路中,沒(méi)有統(tǒng)一時(shí)鐘,各觸發(fā)器狀態(tài)轉(zhuǎn)換是異步完成的。
在always進(jìn)程塊描述時(shí)序邏輯時(shí),賦值語(yǔ)句使用非阻塞賦值,即“<=”。
0****2
時(shí)序邏輯電路設(shè)計(jì)實(shí)例
下面來(lái)看幾個(gè)D觸發(fā)器的設(shè)計(jì)實(shí)例,來(lái)理解Verilog語(yǔ)句與電路之間的關(guān)系。
實(shí)例1:基本D觸發(fā)器
設(shè)計(jì)一個(gè)簡(jiǎn)單的D觸發(fā)器,在時(shí)鐘上升沿觸發(fā)下,輸出等于輸入,其他時(shí)間輸出保持不變。


使用always語(yǔ)句進(jìn)行描述,敏感列表為時(shí)鐘上升沿。當(dāng)時(shí)鐘信號(hào)由0變?yōu)?時(shí),執(zhí)行always語(yǔ)句“q_o=d_i”,如下圖所示。

我們看到輸入信號(hào)d_i不出現(xiàn)在敏感信號(hào)列表中,也就表明,輸入的變化不會(huì)引發(fā)輸出立即變化,只有在時(shí)鐘上升沿時(shí)才被采樣。
下面是綜合后的原理圖,綜合就是將Verilog設(shè)計(jì)對(duì)應(yīng)到FPGA內(nèi)部組成單元上。

我們看到,綜合出的是D觸發(fā)器(FDRE為D觸發(fā)器,參見(jiàn)賽靈思官方文檔ug799),其中敏感列表中的clk被綜合為觸發(fā)器的時(shí)鐘信號(hào)C,d_i連接D觸發(fā)器輸入端D。D觸發(fā)器還包含信號(hào)CE(時(shí)鐘使能端),以及R(復(fù)位端,高有效),在本示例中均未用到。因此,將CE連接高電平,使時(shí)鐘始終有效,R連接低電平,使復(fù)位無(wú)效。
實(shí)例2:帶復(fù)位(高有效)的D觸發(fā)器
下面的例子加入了復(fù)位信號(hào)。復(fù)位分為同步復(fù)位和異步復(fù)位。

同步復(fù)位中,當(dāng)復(fù)位信號(hào)有效時(shí),必須要等到時(shí)鐘上升沿到來(lái)時(shí),才能執(zhí)行復(fù)位信號(hào)相關(guān)的行為語(yǔ)句,如仿真波形圖中所示。


異步復(fù)位中的復(fù)位信號(hào)與時(shí)鐘沒(méi)有關(guān)系,只要復(fù)位信號(hào)有效,就立即執(zhí)行復(fù)位相關(guān)的邏輯行為。要實(shí)現(xiàn)異步復(fù)位,復(fù)位信號(hào)要放在敏感列表中。


仿真波形圖中可以看到,當(dāng)rst有效時(shí),輸出立即被復(fù)位,下一個(gè)clk上升沿到來(lái)時(shí),此時(shí),rst信號(hào)仍然有效,因此,輸出為0。再一個(gè)clk到來(lái)時(shí),復(fù)位無(wú)效,則輸出等于輸入。
實(shí)例3:含異步復(fù)位(低有效)和同步使能的D觸發(fā)器
下面是一個(gè)帶有同步使能信號(hào)的D觸發(fā)器。

這里我們使用了低電平復(fù)位,當(dāng)復(fù)位信號(hào)無(wú)效,使能信號(hào)有效時(shí),在時(shí)鐘上升沿觸發(fā)下,輸出等于輸入。


在綜合后的原理圖中,en使能信號(hào)連接在了D觸發(fā)器的CE端。復(fù)位信號(hào)rst_n與CLK的連接經(jīng)過(guò)一個(gè)LUT(LUT是FPGA用于實(shí)現(xiàn)組合邏輯的基本單元查找表),在Vivado中可以看到該LUT的真值表,它實(shí)現(xiàn)的是反相器的功能,這也說(shuō)明了賽靈思的FPGA中觸發(fā)器的復(fù)位引腳是高有效的,如果你設(shè)計(jì)中復(fù)位是低有效,這里就會(huì)多出一個(gè)反相器將其邏輯取反。
03
always進(jìn)程塊用法總結(jié)
always進(jìn)程塊是最常用的行為描述語(yǔ)句,他可以描述組合邏輯也可以描述時(shí)序邏輯。

描述組合邏輯時(shí),敏感列表中為輸入電平信號(hào),而描述時(shí)序邏輯時(shí),敏感列表為時(shí)鐘邊沿及異步控制信號(hào)。Vivado綜合工具會(huì)根據(jù)always后面的敏感列表的不同形式綜合出相應(yīng)的電路。
always在仿真中還可以通過(guò)延時(shí)控制來(lái)產(chǎn)生激勵(lì)信號(hào)。例如,always #5 clk=~clk,表示當(dāng)執(zhí)行到該語(yǔ)句時(shí),需要延遲5個(gè)時(shí)間單位的時(shí)間(由`timescales 定義),然后再執(zhí)行“clk=~clk”。
-
FPGA設(shè)計(jì)
+關(guān)注
關(guān)注
9文章
431瀏覽量
28143 -
反相器
+關(guān)注
關(guān)注
6文章
332瀏覽量
45194 -
D觸發(fā)器
+關(guān)注
關(guān)注
3文章
181瀏覽量
49744 -
時(shí)序邏輯電路
+關(guān)注
關(guān)注
2文章
94瀏覽量
17135 -
CLK
+關(guān)注
關(guān)注
0文章
132瀏覽量
18041
發(fā)布評(píng)論請(qǐng)先 登錄
VHDL硬件描述語(yǔ)言與和數(shù)字邏輯電路設(shè)計(jì).侯伯亭&顧新
Verilog硬件描述語(yǔ)言描述.
VERILOG HDL硬件描述語(yǔ)言
VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)
[VHDL硬件描述語(yǔ)言與和數(shù)字邏輯電路設(shè)計(jì)].侯伯亭&顧新.掃描版
經(jīng)典教材-VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)(第三版)
Verilog硬件描述語(yǔ)言參考手冊(cè)
VHDL硬件描述語(yǔ)言與數(shù)字邏輯電路設(shè)計(jì)
基于Verilog硬件描述語(yǔ)言的IEEE標(biāo)準(zhǔn)硬件描述語(yǔ)言資料合集免費(fèi)下載
Verilog硬件描述語(yǔ)言的學(xué)習(xí)課件免費(fèi)下載
如何使用Verilog硬件描述語(yǔ)言描述時(shí)序邏輯電路?
評(píng)論