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