時(shí)序電路是數(shù)字電路的基本電路,也是FPGA設(shè)計(jì)中不可缺少的設(shè)計(jì)模塊之一。時(shí)序電路與組合電路最大的不同點(diǎn)是:時(shí)序電路的輸出不僅與輸人有關(guān),還與電路本身的狀態(tài)有關(guān),即時(shí)序電路有記憶功能。大部分時(shí)序電路還有一個(gè)特征,就是有時(shí)鐘驅(qū)動(dòng),電路的各個(gè)狀態(tài)在時(shí)鐘節(jié)拍下變化。本章主要介紹時(shí)序電路的一些基本組件及一些簡(jiǎn)單的時(shí)序邏輯電路應(yīng)用實(shí)例。
13.1D觸發(fā)器建模
【D觸發(fā)器建模】
D觸發(fā)器是時(shí)序電路最基本的組件之一,其基本功能是:輸出端Q的更新只發(fā)生在時(shí)鐘信號(hào)的上升沿(也可以是下降沿,在沒(méi)有其他說(shuō)明的情況下,例子中取上升沿)時(shí)刻,更新為此時(shí)輸人端D的信號(hào)。D觸發(fā)器的Verilog HDL編碼的實(shí)現(xiàn)比較簡(jiǎn)單,具體實(shí)現(xiàn)如【代碼13-1】所列。
【代碼13-1】
編寫(xiě)【代碼13-1】的測(cè)試平臺(tái)如【代碼13-2】所列。
【代碼13-2】
在ModelSim軟件中對(duì)【代碼13-1】進(jìn)行波形仿真,如圖13-1所示。
波形仿真報(bào)告分析
從圖13-1可以看出,在10ns時(shí)刻以前,由于時(shí)鐘信號(hào)的上升沿還沒(méi)有到來(lái)過(guò),所以w_q的值沒(méi)有被更新過(guò),為x;在10ns時(shí)刻,在時(shí)鐘信號(hào)的,上升沿事件發(fā)生,w_q更新為此刻的r_d,值為1,該值會(huì)一直保持到時(shí)鐘信號(hào)的下一個(gè)上升沿事件發(fā)生時(shí);在10ns時(shí)刻,雖然r_d的值發(fā)生了變化,但由于不是發(fā)生在時(shí)鐘信號(hào)的上升沿時(shí)刻,所以w_q的值并沒(méi)有發(fā)生變化。以上對(duì)波形的分析符合D觸發(fā)器的功能特點(diǎn)。
此外,還可以對(duì)【代碼13-1】的D觸發(fā)器加入一些控制信號(hào),如清零信號(hào)、使能信號(hào),具體實(shí)現(xiàn)如【代碼13-3】所列。
【代碼13-3】
【代碼13-3】在Quartus II軟件中綜合后的電路結(jié)構(gòu)如圖13-2所示。
對(duì)【代碼13-3】設(shè)計(jì)測(cè)試平臺(tái),以驗(yàn)證其功能,如【代碼13-4】所列。
【代碼13-4】
在ModelSim軟件中對(duì)【代碼13-3】進(jìn)行波形仿真,如圖13-3所示。
從圖13-3可以看出,在10ns時(shí)刻,雖然在時(shí)鐘信號(hào)r_clk上升沿事件發(fā)生,而且使能信號(hào)r_enable也有效,但是清零信號(hào)r_clr同時(shí)也有效,所以D觸發(fā)器輸出依然沒(méi)有更新為此刻輸入信號(hào)r_d的值;在30ns時(shí)刻,雖然在時(shí)鐘信號(hào)r_clk上升沿事件發(fā)生,而且清零信號(hào)r_clr已無(wú)效,但是使能信號(hào)r_enable卻無(wú)效,所以D觸發(fā)器輸出依然沒(méi)有更新為此刻輸入信號(hào)r_d的值;在50ns時(shí)刻,雖然在時(shí)鐘信號(hào)r_clk上升沿事件發(fā)生,使能信號(hào)r_enable也有效,但是清零信號(hào)已無(wú)效,所以D觸發(fā)器輸出立即更新為此刻輸入信號(hào)r_d的值。
除此之外,有關(guān)Verilog HDL基本時(shí)序電路建模方面,還包括了鎖存器建模、JK觸發(fā)器建模等。想學(xué)習(xí)更多Verilog HDL建模、時(shí)序與整合電路方面的知識(shí),可以下載編者為大家精選準(zhǔn)備的一份FPGA學(xué)習(xí)指南合集:Verilog HDL那些事兒(建模篇,時(shí)序篇,整合篇)
Verilog HDL那些事兒建模篇:
在眾多的Verilog HDL 參考書(shū),隱隱約約會(huì)會(huì)出現(xiàn)這樣的一個(gè)“建模”。建模在Verilog HDL的世界里是一個(gè)重要的基礎(chǔ),很多初學(xué)Verilog HDL + FPGA 的朋友會(huì)成為徘徊在邊緣的一群,主要原因就是他們沒(méi)有掌握好建模技巧,而形成他們繼續(xù)前進(jìn)的一大阻礙。在這里筆者將自己養(yǎng)成的建模技巧,編輯成為一本筆記,好讓許更多初學(xué)的朋友越過(guò)這一段學(xué)習(xí)的大障礙。
Verilog HDL那些事兒時(shí)序篇:
建模不是Verilog HDL 語(yǔ)言的所有,建模只是使用Verilog HDL 語(yǔ)言建立一個(gè)“像模像樣”的“形狀”而已。這個(gè)“形狀”實(shí)際上是很粗糙的,還沒(méi)有經(jīng)過(guò)任何深入的分析。但是我們不可以小看這個(gè)“粗糙的形狀”,如果沒(méi)有這個(gè)“粗糙的形狀”模塊的設(shè)計(jì)根本無(wú)法完成。筆者在《Verilog HDL 那些事兒-建模篇》的結(jié)束語(yǔ)中有這樣講過(guò):“建模是一個(gè)粗糙的東西,它還可以繼續(xù)細(xì)化”。
“細(xì)化”顧名思義就是進(jìn)入模塊的深層進(jìn)行分析和優(yōu)化(如果有需要調(diào)試的話(huà))的工作。但是前提,我們必須“更深入Verilog HDL 語(yǔ)言的世界”才能有效的“細(xì)化”模塊。這一本起名為《Verilog HDL 那些事兒-時(shí)序篇》的筆記分別有兩個(gè)部分,上半部分和下半部分。上半部分是“步驟和時(shí)鐘”;下半部分是“綜合和仿真”。
Verilog HDL那些事兒整合篇:
要在Verilog 要實(shí)現(xiàn)for 和while 等循環(huán)是一個(gè)矛盾的作業(yè),這話(huà)何說(shuō)呢?首先我們可以用Verilog 來(lái)模仿for 和while 等循環(huán),這也是第一章的重點(diǎn)。可是隨著我們深入了解Verilog 各種不同的運(yùn)行模式,模仿就會(huì)失去意義。.. 因?yàn)橹灰幸粋€(gè)指向步驟的i 再加上一些整合的技巧,怎么樣的循環(huán)我們都可以實(shí)現(xiàn),這也是第五章的重點(diǎn)。當(dāng)然整合篇所討論的內(nèi)容不單是循環(huán)而已,整合篇的第二個(gè)重點(diǎn)是理想時(shí)序和物理時(shí)序的整合。說(shuō)實(shí)話(huà),筆者自身也認(rèn)為要結(jié)合“兩個(gè)時(shí)序”是一件苦差事,理想時(shí)序是Verilog的行為,物理時(shí)序則是硬件的行為。不過(guò)在它們兩者之間又有微妙的“黏糊點(diǎn)”,只要稍微利用一下這個(gè)“黏糊點(diǎn)”我們就可以非常輕松的寫(xiě)出符合“兩個(gè)時(shí)序”的模塊,但是前提條件是充足了解“理想時(shí)序”。
整合篇里還有一個(gè)重點(diǎn),那就是“精密控時(shí)”。實(shí)現(xiàn)“精密控時(shí)”最笨的方法是被動(dòng)式的設(shè)計(jì)方法,亦即一邊仿真,一邊估算時(shí)鐘的控制精度。這顯然是非?!皞鹘y(tǒng)”而且“古老”的方法,雖然有效但往往就是最費(fèi)精神和時(shí)間的。相反的,主動(dòng)式是一種講求在代碼上和想象上實(shí)現(xiàn)“精密控時(shí)”的設(shè)計(jì)方法。主動(dòng)式的設(shè)計(jì)方法是基于“理想時(shí)序”“建模技巧”和“仿順序操作”作為后盾的整合技巧。不說(shuō)筆者吹牛,如果采用主動(dòng)式的設(shè)計(jì)方法驅(qū)動(dòng)IIC 和SDRAM 硬件,任何一段代碼都是如此合情合理。
-
邏輯電路
+關(guān)注
關(guān)注
13文章
492瀏覽量
42535 -
時(shí)序電路
+關(guān)注
關(guān)注
1文章
114瀏覽量
21672
原文標(biāo)題:FPGA設(shè)計(jì)應(yīng)用實(shí)例—Verilog HDL基本時(shí)序電路建模
文章出處:【微信號(hào):elecfans,微信公眾號(hào):電子發(fā)燒友網(wǎng)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論