查看: 3323|回復: 2
打印 上一主題 下一主題

潘文明至簡(jiǎn)設計法系列教程】D觸發(fā)器、波形、代碼

[復制鏈接]
跳轉到指定樓層
樓主
發(fā)表于 2017-6-20 10:26:37 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
關(guān)鍵詞: fpga , 教程 , 學(xué)習
在學(xué)習verilog之前,我們先學(xué)習一下D觸發(fā)器以及它的代碼。
FPGA的設計基礎是數字電路,因此很多同學(xué)會(huì )認為我們要先學(xué)好數字電路之后,才學(xué)習FPGA。但是,數字電路教材的內容很多.例如:JK觸發(fā)器、RS觸發(fā)器、真值表、卡諾圖等。但是,這里的很多內容其實(shí)已經(jīng)過(guò)時(shí)了。此外,對于FPGA的學(xué)習來(lái)講,我們只用到了其中很少很少的一部分內容。如果沒(méi)有數字電路的基礎,我們建議就看一部分,知道D觸發(fā)器就夠了。
那么D觸發(fā)器是什么樣子的呢?
這個(gè)就是D觸發(fā)器的示意圖。其中,clk為時(shí)鐘,rst_n為復位,d為輸入,q為輸出。這個(gè)功能非常簡(jiǎn)單,復位有效的時(shí)候,這個(gè)q的值你可以認為是0。如果復位無(wú)效的時(shí)候,那么在時(shí)鐘上升沿的時(shí)候,就把d的值給了q。就是這么簡(jiǎn)單,記住這個(gè)動(dòng)作,先有時(shí)鐘上升沿,再有把d的值給了q。這就意味著(zhù),時(shí)鐘上升沿的時(shí)候q的值還是沒(méi)變的。只有時(shí)鐘上升沿之后,q的值才變化。這是一個(gè)很重要的概念,也就是說(shuō)先有時(shí)鐘上升沿才有q的變化。如果下一個(gè)時(shí)鐘上升沿沒(méi)有到來(lái),那么q的值就保持不變。因此,q的值是在時(shí)鐘上升沿之后一點(diǎn)點(diǎn)變化。這就是D觸發(fā)器,我們所有的FPGA電路都是基于這個(gè)結構來(lái)進(jìn)行設計的。就是這么簡(jiǎn)單,諸如JK觸發(fā)器、RS觸發(fā)器之類(lèi)完全不需用到。我們就用最簡(jiǎn)單的結果來(lái)進(jìn)行設計。有些同學(xué)會(huì )問(wèn)為什么如此簡(jiǎn)單就足以進(jìn)行設計呢?其實(shí)我們要做一個(gè)系統,一個(gè)穩定的系統,一定是從一個(gè)最簡(jiǎn)單的結構搭建起來(lái)的,而不會(huì )是一個(gè)很復雜的結構,因此我們FPGA電路里面就是利用D觸發(fā)器的穩定性,把它搭建起來(lái)的。
那么D觸發(fā)器所對應的波形圖是怎么樣的呢?
這個(gè)是波形圖,你可以看一看q,它都是在時(shí)鐘上升沿之后變化的,在第2個(gè)時(shí)鐘上升沿,看到d的值為0,那么q就輸出0,q的值就保持不變了直到下一個(gè)時(shí)鐘上升沿的到來(lái)。下一個(gè)時(shí)鐘上升沿d的值為1,那么q就輸出1,如此類(lèi)推。這就是我們d觸發(fā)器的功能,非常非常地簡(jiǎn)單。
那么這個(gè)D觸發(fā)器在FPGA里面用verilog代碼怎么描述呢?
其實(shí)就是這樣的代碼,可以看出來(lái),這個(gè)代碼跟這個(gè)D觸發(fā)器是完全一樣的,描述的就是D觸發(fā)器。怎么講,可以分析一下這個(gè)代碼:
1····總是(always)在時(shí)鐘(clk)上升沿(posedge)的時(shí)候或者下降沿(negedge)復位(rst_n)的時(shí)候執行2~8的代碼,如果不滿(mǎn)足則q的值不變。
2····如果是復位就執行3的代碼;
3····q就等于0;
5····如果不是復位,而是時(shí)鐘上升沿就執行6的代碼;
6····將d的值給了q;
這個(gè)代碼描述的就是一個(gè)D觸發(fā)器,一個(gè)always就生成了一個(gè)D觸發(fā)器。你可以認為D觸發(fā)器就是我們電路上的一個(gè)元件。
總結要點(diǎn):
1. q的值只有在時(shí)鐘上升沿才變化。
2. 時(shí)鐘上升沿時(shí),將d的值賦給q。即先有上升沿,才有信號變化。
為什么強調先有上升沿,才有信號變化呢?有什么用呢?例如:
明德?lián)P的波形,默認的情況下都是同步信號,這意味著(zhù)en和dout都是由D觸發(fā)器產(chǎn)生的。因此信號的變化,都是在時(shí)鐘上升沿之后才開(kāi)始的,en也是在時(shí)鐘上升沿之后一點(diǎn)點(diǎn)才變化的;在2的上升沿這個(gè)點(diǎn)上看到en的值是0的,因為en還沒(méi)變化;而在3的上升沿這個(gè)點(diǎn)上看到en的值是1,dout的值是0;最后,在10的上升沿這個(gè)點(diǎn)上看到dout的值是1。




沙發(fā)
發(fā)表于 2017-6-21 16:19:00 | 只看該作者
這個(gè)教程真心不錯  強烈推薦
板凳
發(fā)表于 2017-6-21 16:58:57 | 只看該作者
強烈推薦
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

關(guān)于我們  -  服務(wù)條款  -  使用指南  -  站點(diǎn)地圖  -  友情鏈接  -  聯(lián)系我們
電子工程網(wǎng) © 版權所有   京ICP備16069177號 | 京公網(wǎng)安備11010502021702
快速回復 返回頂部 返回列表
午夜高清国产拍精品福利|亚洲色精品88色婷婷七月丁香|91久久精品无码一区|99久久国语露脸精品|动漫卡通亚洲综合专区48页