邊沿檢測(cè)原理
邊沿檢測(cè)大致分為:上升沿檢測(cè),下降沿檢測(cè)和,雙沿檢測(cè)。原理都是通過(guò)比輸入信號(hào)快很多的時(shí)鐘去采集信號(hào),當(dāng)出現(xiàn)兩個(gè)連續(xù)的采集值不等的時(shí)候就是邊沿產(chǎn)生處。
圖1為邊沿采集圖,clk為采集時(shí)鐘,sig為被采集信號(hào),現(xiàn)在需要知道什么時(shí)候sig的跳邊沿到來(lái),于是有了一個(gè)sig_buf的2bit信號(hào)用來(lái)存儲(chǔ)被采集的sig信號(hào),當(dāng)前值被放在低位,高位時(shí)是上一個(gè)時(shí)刻的值。也就是
sig_buf[1:0] <= {sig_buf[0],sig};
從圖中可以看出,sig_buf為2'01的時(shí)候正好是上升沿出現(xiàn)之后,2'b10正是下降沿出現(xiàn)之后。所以正好可以利用這兩個(gè)信號(hào)的出現(xiàn)來(lái)判斷上升沿還是下降沿。這樣也就實(shí)現(xiàn)了邊沿檢測(cè)。
重點(diǎn)
這種邊沿檢測(cè)方法一定要有clk周期小于sig高電平脈寬的條件,不然無(wú)法保證能夠每次采集到sig的邊沿。
圖1. 邊沿采集示意圖
邊沿采集代碼講解
此代碼可以修改sig_buf的長(zhǎng)度,也就是 不用一個(gè)0和一個(gè)1判斷,而是多個(gè)0和多個(gè)1,但是寬度變了以后對(duì)sig的脈寬要求也就更寬,這點(diǎn)一定要牢記,不然很可能出現(xiàn)檢測(cè)邊沿?zé)o法實(shí)現(xiàn)。
很多人反映tb寫(xiě)不來(lái),不知道tb要寫(xiě)什么,要怎么寫(xiě)。這里順便說(shuō)下怎么寫(xiě),就以邊沿檢測(cè)tb為例。
仿真目的 :產(chǎn)生符合自己要求的激勵(lì)信號(hào),測(cè)試此時(shí)的輸出是否和預(yù)想一致,一致則通過(guò),否則失敗。
仿真步驟 :根據(jù)仿真目的也很容易可以抽象出來(lái)仿真的步驟分為2步,第一步,產(chǎn)生激勵(lì),第二步,查看被測(cè)試模塊輸出。
激勵(lì)產(chǎn)生 :
周期信號(hào)產(chǎn)生always begin #5 clk=0; #5 clk=1; end //時(shí)鐘信號(hào)
只在最開(kāi)始產(chǎn)生某種特殊波形:initial begin rst = 1 ; #10 rst = 0; end
上述兩種信號(hào)都是關(guān)于時(shí)間的函數(shù)f(t),這種函數(shù)特點(diǎn)決定了可以用延時(shí)命令#xx去產(chǎn)生。
需要結(jié)合當(dāng)前狀態(tài)的信號(hào):這種波形不僅僅時(shí)間的函數(shù),還和某個(gè)信號(hào)相關(guān),比如分頻模塊,分頻值在不停變,那么這個(gè)時(shí)候不如直接調(diào)用一個(gè)已經(jīng)寫(xiě)好的分頻模塊,分頻系數(shù)可以外部狀態(tài)機(jī)控制,這樣就可以解決。換句話(huà)說(shuō),tb只是產(chǎn)生理想激勵(lì),所以需要你不擇手段的去產(chǎn)生自己想要的東西,不管是可綜合還是不可綜合語(yǔ)句。
tb文件的一般代碼結(jié)構(gòu) :
1.module定義
2.reg和wire定義,需要被你主動(dòng)控制的信號(hào)定義為reg,有賦值來(lái)源的信號(hào)定義為wire,比如模塊輸入定義為reg,方便自己產(chǎn)生各種波形,輸出定義為wire。
3.initial begin end語(yǔ)句,產(chǎn)生初始化激勵(lì),比如復(fù)位,使能。initial語(yǔ)句可以寫(xiě)多個(gè),效果上兩個(gè)initial都是同時(shí)執(zhí)行的,仿真的時(shí)候你感受不出差別。
4.特殊激勵(lì)產(chǎn)生,比如時(shí)鐘,狀態(tài)機(jī)等
5.被測(cè)試模塊調(diào)用
6.被測(cè)試模塊輸出結(jié)果合格檢測(cè),這一步如果不會(huì)可以忽略,自己看波形。對(duì)于復(fù)雜設(shè)計(jì)看波形會(huì)非常累,所以建議慢慢養(yǎng)成習(xí)慣
仿真結(jié)果展示
上升沿檢測(cè)波形,mode=0,當(dāng)輸入信號(hào)被檢測(cè)到上升沿的時(shí)候,信號(hào)the_edge就會(huì)有一個(gè)高脈沖:
圖2. 上升沿檢測(cè)
下降沿檢測(cè)波形,mode=1,當(dāng)輸入信號(hào)被檢測(cè)到下降沿的時(shí)候,信號(hào)the_edge就會(huì)有一個(gè)高脈沖:
圖3. 下降沿檢測(cè)
雙沿檢測(cè)波形,mode=2,當(dāng)輸入信號(hào)被檢測(cè)到上升沿或者下降沿的時(shí)候,信號(hào)the_edge就會(huì)有一個(gè)高脈沖:
圖4. 雙沿檢測(cè)
-
仿真器
+關(guān)注
關(guān)注
14文章
1016瀏覽量
83638 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
492瀏覽量
27478 -
CLK
+關(guān)注
關(guān)注
0文章
127瀏覽量
17126 -
Verilog語(yǔ)言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8214
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論