【文章內(nèi)容簡介】
信號。輸入的信號只要幅度大于vt+,即可在施密特觸發(fā)器的輸出端得到同等頻率的矩形脈沖信號。 當(dāng)輸入電壓由低向高增加,到達(dá)V+時,輸出電壓發(fā)生突變,而輸入電壓Vi由高變低,到達(dá)V,輸出電壓發(fā)生突變,因而出現(xiàn)輸出電壓變化滯后的現(xiàn)象,可以看出對于要求一定延遲啟動的電路,它是特別適用的. 圖41即為信號通過施密特觸發(fā)器后的波形變換情況。圖41 施密特觸發(fā)器的波形變換待測信號經(jīng)過時,由DD2兩個二極管進(jìn)行限幅,以免電壓過大而燒毀,信號經(jīng)過2N2222進(jìn)行放大,由74F14對其進(jìn)行整形,產(chǎn)生出的波形為標(biāo)準(zhǔn)方波,方便FPGA進(jìn)行計(jì)數(shù)。其連線如圖42所示:圖42 放大整形電路圖 標(biāo)準(zhǔn)信號產(chǎn)生模塊設(shè)計(jì)本設(shè)計(jì)采用的是Altera公司生產(chǎn)的DE2開發(fā)板,在開發(fā)板上有50MHZ的晶振,我們只需將晶振的引腳與我們設(shè)計(jì)的FPGA芯片對應(yīng)配置就可以了。 FPGA芯片模塊設(shè)計(jì)本設(shè)計(jì)采用的是Altera公司生產(chǎn)的CycloneII系列EP2C35F672C6芯片為核心器件實(shí)現(xiàn)高精度計(jì)數(shù)功能。Cyclone II器件相較于Cyclone而言包含了許多新的特性,如嵌入存儲器、嵌入乘法器、PLL和低成本的封裝等。EP2C35系列芯片有33216個邏輯單元,4個鎖相環(huán),475個I/O管腳和205個差分通道,因此功能十分強(qiáng)大。在FPGA芯片中主要有以下幾個模塊構(gòu)成,D型觸發(fā)器,2個32位計(jì)數(shù)器,2個鎖存器,NIOS II軟核處理器。等精度測頻原理的預(yù)置門限信號可由CPU發(fā)出,連接到D型觸發(fā)器的輸入端。計(jì)數(shù)器1和計(jì)數(shù)器2是兩個32位計(jì)數(shù)器,標(biāo)準(zhǔn)頻率信號FS,從計(jì)數(shù)器1的計(jì)數(shù)輸入端輸入,經(jīng)整形后的被測信號FX,從計(jì)數(shù)器2的計(jì)數(shù)輸入端輸入。計(jì)數(shù)器中的EN輸入端與D型觸發(fā)器的輸出端相連,當(dāng)預(yù)置門限信號為高電平(門限時間開始)時,同時被測信號的上升沿到來時,D型觸發(fā)器工作將輸出端置1,同時啟動兩個計(jì)數(shù)器開始計(jì)數(shù)。當(dāng)預(yù)置門限信號為低電平(門限時間結(jié)束)時,同時被測信號的上升沿到來時,D觸發(fā)器工作將輸出端置0,同時關(guān)閉計(jì)數(shù)器的計(jì)數(shù)。計(jì)數(shù)器1及計(jì)數(shù)器2所計(jì)之?dāng)?shù)通過鎖存器進(jìn)入CPU,經(jīng)過運(yùn)算處理后送給顯示模塊進(jìn)行數(shù)字顯示即可。FPGA芯片內(nèi)部設(shè)計(jì)框圖如下圖43所示。圖43 FPGA內(nèi)部設(shè)計(jì)框圖 D型觸發(fā)器的設(shè)計(jì)本設(shè)計(jì)采用的是邊沿觸發(fā)的D 觸發(fā)器,電平觸發(fā)的主從觸發(fā)器工作時,必須在正跳沿前加入輸入信號。如果在CP 高電平期間輸入端出現(xiàn)干擾信號,那么就有可能使觸發(fā)器的狀態(tài)出錯。而邊沿觸發(fā)器允許在CP 觸發(fā)沿來到前一瞬間加入輸入信號。這樣,輸入端受干擾的時間大大縮短,受干擾的可能性就降低了。邊沿D觸發(fā)器也稱為維持阻塞邊沿D觸發(fā)器。D型觸發(fā)器在設(shè)計(jì)中的作用十分重大,它是等精度計(jì)數(shù)的核心。當(dāng)輸入D置1時,輸出Q不是馬上置1,而是時鐘脈沖上升沿到來時才跳變,這時計(jì)數(shù)器才開始計(jì)數(shù)。當(dāng)然,在輸入D置0時,輸出Q不是馬上置0,而是時鐘脈沖上升沿到來時才置0。這里的時鐘脈沖就是采用被測信號,如此一來,就可以保證計(jì)數(shù)器對被測信號周期的測量是周期的整數(shù)倍了,大大減小了誤差。在使用EDA技術(shù)對FPGA內(nèi)部數(shù)字電路的設(shè)計(jì)中,最大的優(yōu)點(diǎn)就是可以根據(jù)設(shè)計(jì)的需要,定制相應(yīng)的器件,對于某些不用的引腳可以不用設(shè)計(jì)。例如,對于D型觸發(fā)器而言,一般都有清零和置數(shù)端,但在本設(shè)計(jì)中,清零與置數(shù)端是沒有用的,所以我們便可不用將它設(shè)計(jì)進(jìn)來。故D型觸發(fā)器的VHDL程序如下:LIBRARY IEEE。USE 。ENTITY d IS PORT( d :in std_logic。 clk :in std_logic。 q,qn :out std_logic )。END d。ARCHITECTURE rt3 of d ISBEGIN PROCESS(clk) BEGIN IF (clk39。event and clk=39。139。) THEN q=d。 qn=NOT d。 END IF。END PROCESS。本設(shè)計(jì)最終采用的是原理圖輸入的方法將功能寫入FPGA芯片的,故需要對每一個設(shè)計(jì)好的模塊生成模塊文件。D型觸發(fā)器的模塊文件如下圖44。0圖44 D型觸發(fā)器的模塊文件 計(jì)數(shù)器的設(shè)計(jì)計(jì)數(shù)是一種最簡單基本的運(yùn)算,計(jì)數(shù)器就是實(shí)現(xiàn)這種運(yùn)算的邏輯電路,計(jì)數(shù)器在數(shù)字系統(tǒng)中主要是對脈沖的個數(shù)進(jìn)行計(jì)數(shù),以實(shí)現(xiàn)測量、計(jì)數(shù)和控制的功能,同時兼有分頻功能,計(jì)數(shù)器是由基本的計(jì)數(shù)單元和一些控制門所組成,計(jì)數(shù)單元則由一系列具有存儲信息功能的各類觸發(fā)器構(gòu)成,這些觸發(fā)器有RS觸發(fā)器、T觸發(fā)器、D觸發(fā)器及JK觸發(fā)器等。計(jì)數(shù)器在數(shù)字系統(tǒng)中應(yīng)用廣泛,如在電子計(jì)算機(jī)的控制器中對指令地址進(jìn)行計(jì)數(shù),以便順序取出下一條指令,在運(yùn)算器中作乘法、除法運(yùn)算時記下加法、減法次數(shù),又如在數(shù)字儀器中對脈沖的計(jì)數(shù)等等。計(jì)數(shù)器可以用來顯示產(chǎn)品的工作狀態(tài),一般來說主要是用來表示產(chǎn)品已經(jīng)完成了多少份的折頁配頁工作。它主要的指標(biāo)在于計(jì)數(shù)器的位數(shù),常見的有3位和4位的。很顯然,3位數(shù)的計(jì)數(shù)器最大可以顯示到999,4位數(shù)的最大可以顯示到9999。本設(shè)計(jì)對計(jì)數(shù)器的要求比較高,因?yàn)橐獙?00MHZ的信號進(jìn)行計(jì)數(shù),故采用32位的計(jì)數(shù)器,其計(jì)數(shù)最大值為4294967296,足以達(dá)到設(shè)計(jì)要求。在Quartus II中使用文本輸入方法定制一個滿足要求的32位計(jì)數(shù)器,新建一個工程,然后新建一個VHDL文件,輸入程序進(jìn)行調(diào)試仿真。本設(shè)計(jì)需要兩個32位計(jì)數(shù)器,分別對標(biāo)準(zhǔn)信號和被測信號進(jìn)行計(jì)數(shù)。標(biāo)準(zhǔn)信號計(jì)數(shù)器的VHDL程序如下:LIBRARY IEEE。USE 。USE 。USE 。ENTITY c_counter IS PORT( clk :in std_logic。 clr :in std_logic。 c_en :in std_logic。 c_t :buffer std_logic_vector(31 downto 0) )。END c_counter。ARCHITECTURE rt1 OF c_counter ISBEGINPROCESS(clr,clk) BEGIN IF clr = 39。139。 THEN c_t=(OTHERS=39。039。)。 ELSIF rising_edge(clk) THEN IF c_en=39。139。 THEN c_t=c_t+39。139。 END IF。 END IF。END PROCESS。END ARCHITECTURE。在計(jì)數(shù)器完成計(jì)數(shù)后,需要將計(jì)數(shù)結(jié)果送入鎖存器進(jìn)行鎖存,故在設(shè)計(jì)被測信號計(jì)數(shù)器的時候,將鎖存器的使能控制信號over添加了進(jìn)來,被測信號計(jì)數(shù)器的輸出端over與鎖存器的使能端相連,這樣就能很好的完成計(jì)數(shù),鎖存功能了。被測信號計(jì)數(shù)器的VHDL程序如下:LIBRARY IEEE。USE 。USE 。USE 。ENTITY s_counter IS PORT( s_en :in std_logic。 clr :in std_logic。 sign :in std_logic。 over :out std_logic。 s_t :buffer std_logic_vector(31 downto 0) )。END s_counter。ARCHITECTURE rt2 OF s_counter ISsignal TEMP: std_logic:=39。039。BEGINPROCESS(clr,sign) BEGIN IF clr = 39。139。 THEN s_t=(OTHERS=39。039。)。 ELSIF rising_edge(sign) THEN IF s_en=39。139。 THEN s_t=s_t+39。139。 END IF。 END IF。END PROCESS。PROCESS(s_en) BEGIN IF falling_edge(s_en) THEN IF s_en=39。039。 then TEMP=39。139。 END IF。 END IF。END PROCESS。over=TEMP。END ARCHITECTURE。經(jīng)過編譯后生成模塊文件,標(biāo)準(zhǔn)信號計(jì)數(shù)器的模塊文件如下圖45,被測信號計(jì)數(shù)器的模塊文件如下圖46。 圖45 標(biāo)準(zhǔn)信號計(jì)數(shù)器的模塊文件 圖46 被測信號計(jì)數(shù)器的模塊文件 鎖存器的設(shè)計(jì)鎖存器是一種對脈沖電平敏感的存儲單元電路,它們可以在特定輸入脈沖電平作用下改變狀態(tài)。鎖存,就是把信號暫存以維持某種電平狀態(tài)。鎖存器的最主要作用是緩存,其次完成高速的控制其與慢速的外設(shè)的不同步問題,再其次是解決驅(qū)動的問題,最后是解決一個 I/O 口既能輸出也能輸入的問題。本設(shè)計(jì)主要是使用其緩存的作用,當(dāng)計(jì)數(shù)器完成計(jì)數(shù)后,將計(jì)數(shù)結(jié)果先進(jìn)行鎖存,然后再啟動CPU進(jìn)行讀數(shù),這樣就可以保證,CPU在讀數(shù)時不受影響。這里使用的是1個2路32位的鎖存器。鎖存器的VHDL程序如下:LIBRARY IEEE。USE 。ENTITY ffd IS PORT(CLR : in std_logic。LOAD : in std_logic。DATA_EN:out std_logic。DATA1_IN : in std_logic_vector (31 downto 0)。DATA2_IN : in std_logic_vector (31 downto 0)。DATA1_OUT : out std_logic_vector (31 downto 0)。DATA2_OUT : out std_logic_vector (31 downto 0))。END ENTITY。 ARCHITECTURE ffd_arch OF ffd ISBEGINPROCESS(CLR,LOAD)BEGINIF CLR = 39。139。 THENDATA1_OUT = (others = 39。039。)。DATA2_OUT = (others = 39。039。)。DATA_EN=39。039。ELSIF LOAD = 39。139。 THENDATA1_OUT = DATA1_IN。DATA2_OUT = DATA2_IN。DATA_EN=39。139。END IF。END PROCESS。 END ARCHITECTURE。經(jīng)過編譯后生成模塊文件,鎖存器的模塊文件如下圖47。圖47 鎖存器的模塊文件 NIOS II 軟核CPU的設(shè)計(jì)在本設(shè)計(jì)中還用到了NIOS II軟核處理器,NIOS II是Altera公司在NIOS的基礎(chǔ)上,于2004年發(fā)布的嵌入式軟核處理器。所謂軟核,是指用HDL文本形式提交給用戶,他經(jīng)過RTL級設(shè)計(jì)優(yōu)化和功能驗(yàn)證,但其中不含任何具體的物理信息。NIOS II是采用流水線技術(shù)和哈佛結(jié)構(gòu)的通用RISC(Refined Instruction Set Computer,精簡指令集計(jì)算機(jī))。一個NIOS II處理器系統(tǒng)由NIOS II CPU和一系列的外設(shè)組成。NIOS II系統(tǒng)包括NIOS II CPU、片內(nèi)外設(shè)、片內(nèi)存儲器和片外外設(shè),他們的接口都在Altera公司的芯片上實(shí)現(xiàn)。相當(dāng)于在單片機(jī)實(shí)現(xiàn)1臺計(jì)算機(jī)或1個微控制器。所有的NIOS II處理器系統(tǒng)使用統(tǒng)一的指令集和編程方式。NIOSⅡ的處理器實(shí)例如圖48所示。圖48 NIOS II的處理器實(shí)