0 引 言 隨著電子技術(shù)、計(jì)算機(jī)技術(shù)和EDA技術(shù)的不斷發(fā)展,利用FPGA/CPLD進(jìn)行數(shù)字系統(tǒng)的開(kāi)發(fā)已被廣泛應(yīng)用于通信、航天、醫(yī)療電子、工業(yè)控制等領(lǐng)域。與傳統(tǒng)電路設(shè)計(jì)方法相比,F(xiàn)PGA/CPLD具有功能強(qiáng)大,開(kāi)發(fā)周期短,投資少,便于追蹤市場(chǎng)變化及時(shí)修改產(chǎn)品設(shè)計(jì),以及開(kāi)發(fā)工具智能化等特點(diǎn)。近年來(lái),F(xiàn)PGA/CPLD發(fā)展迅速,隨著集成電路制造工藝的不斷進(jìn)步,高性價(jià)比的FPGA/CPLD器件推陳出新,使FPGA/CPLD成為當(dāng)今硬件設(shè)計(jì)的重要途徑。在FPGA/CPLD的應(yīng)用設(shè)計(jì)開(kāi)發(fā)中,VHDL語(yǔ)言作為一種主流的硬件描述語(yǔ)言,具有很強(qiáng)的電路描述和建模能力,能從多個(gè)層次對(duì)數(shù)字系統(tǒng)進(jìn)行建模和描述,從而大大簡(jiǎn)化了硬件設(shè)計(jì)任務(wù),提高了設(shè)計(jì)效率和可靠性,并在語(yǔ)言易讀性和層次化、結(jié)構(gòu)化設(shè)計(jì)方面。表現(xiàn)出了強(qiáng)大的生命力和應(yīng)用潛力。 QuartusⅡ是Altera公司在21世紀(jì)初推出的FPGA/CPLD集成開(kāi)發(fā)環(huán)境,是Altera公司前一代FPGA/CPLD集成開(kāi)發(fā)環(huán)境Max+PlusⅡ的更新?lián)Q代產(chǎn)品,其界面友好,使用便捷,功能強(qiáng)大,為設(shè)計(jì)者提供了一種與結(jié)構(gòu)無(wú)關(guān)的設(shè)計(jì)環(huán)境,使設(shè)計(jì)者能方便地進(jìn)行設(shè)計(jì)輸入、快速處理和器件編程。 計(jì)數(shù)器是數(shù)字系統(tǒng)中使用最多的時(shí)序電路之一,不僅能用于對(duì)時(shí)鐘脈沖計(jì)數(shù),還可以用于分頻、定時(shí)、產(chǎn)生節(jié)拍脈沖和脈沖序列以及進(jìn)行數(shù)字運(yùn)算等。可變模計(jì)數(shù)器由于計(jì)數(shù)容量可以根據(jù)需要進(jìn)行變化,為其廣泛使用創(chuàng)造了便利。這里在QuartusⅡ開(kāi)發(fā)環(huán)境下,用VHDL語(yǔ)言設(shè)計(jì)了一種具有清零、置數(shù)、使能控制、可逆計(jì)數(shù)和可變模功能的計(jì)數(shù)器。 1 基本可變模計(jì)數(shù)器設(shè)計(jì) 可變模計(jì)數(shù)器是指計(jì)數(shù)/模值可根據(jù)需要進(jìn)行變化的計(jì)數(shù)器。電路符號(hào)圖1所示,clk為時(shí)鐘脈沖輸入端,clr為清零端,m為模值輸入端,q為計(jì)數(shù)輸出端。 基本可變模計(jì)數(shù)器的VHDL代碼如下所示: 說(shuō)明:上述代碼設(shè)計(jì)采用了常用的if語(yǔ)句結(jié)構(gòu),即“if條件句then順序語(yǔ)句elsif條件句then順序語(yǔ)句else順序語(yǔ)句end if”結(jié)構(gòu),實(shí)現(xiàn)模值小于99的可變模計(jì)數(shù)。 從上述的代碼可以看出,基本的可變模計(jì)數(shù)器的功能單一。仿真驗(yàn)證則表明在進(jìn)行模值變換時(shí),基本的可變模計(jì)數(shù)器存在一些功能上的缺陷:計(jì)數(shù)器若是由較小的模值變化為較大的模值時(shí),能正常的進(jìn)行變模計(jì)數(shù);但當(dāng)其由較大的模值變化為較小的模值,則可能出現(xiàn)計(jì)數(shù)失控,如圖2所示,圖中顯示了當(dāng)模值由12變換為7時(shí),即發(fā)生了計(jì)數(shù)失控。失控的原因是大于當(dāng)模值由12變換為7時(shí),計(jì)數(shù)輸出為q為11,大于當(dāng)前模值7的計(jì)數(shù)最大值6,由此產(chǎn)生了計(jì)數(shù)失控。 2 改進(jìn)的多功能可變模計(jì)數(shù)器 為了克服上述基本可變模計(jì)數(shù)器的缺陷,并增加更多的控制功能,在此設(shè)計(jì)了一種改進(jìn)的多功能可變模計(jì)數(shù)器,具有清零、置數(shù)、使能控制、可逆計(jì)數(shù)和可變模功能。其電路符號(hào)如圖3所示,clk為時(shí)鐘脈沖輸入端,m為模值輸入端,clr為清零控制端,s為置數(shù)控制端,d為置數(shù)輸入端,en為使能控制端,updn為計(jì)數(shù)方向控制端,q為計(jì)數(shù)輸出端,co為進(jìn)位輸出端。 這里所設(shè)計(jì)的多功能可變模計(jì)數(shù)器的VHDL代碼如下所示: LIBRARY IEEE; 值得注意的是,這里所設(shè)計(jì)的多功能可變模計(jì)數(shù)器具有如下特點(diǎn): (1)該設(shè)計(jì)的多功能可變模計(jì)數(shù)器具有多個(gè)功能控制端。因此各個(gè)控制端的優(yōu)先權(quán)順序就成為設(shè)計(jì)的關(guān)鍵,經(jīng)過(guò)理論分析和仿真調(diào)試,最終確認(rèn)的優(yōu)先權(quán)順序?yàn)椋篶lr(清零)→clk(時(shí)鐘觸發(fā))→s(置數(shù))→en(使能)→updn(計(jì)數(shù)方向)。這個(gè)優(yōu)先權(quán)順序可以有效地保證各個(gè)功能的完整實(shí)現(xiàn),以及技術(shù)器的穩(wěn)定運(yùn)行。 (2)為了防止出現(xiàn)計(jì)數(shù)失控,大多數(shù)計(jì)數(shù)器采用給計(jì)數(shù)器增加一個(gè)復(fù)位控制端的辦法,當(dāng)發(fā)現(xiàn)計(jì)數(shù)輸出q發(fā)生了計(jì)數(shù)失控時(shí),通過(guò)復(fù)位控制端將計(jì)數(shù)器復(fù)位來(lái)排除計(jì)數(shù)失控。這種方法雖然有效,但是每次出現(xiàn)計(jì)數(shù)失控都要手動(dòng)控制復(fù)位,給實(shí)際使用帶來(lái)了不便。該設(shè)計(jì)的多功能可變模計(jì)數(shù)器中,將當(dāng)前的計(jì)數(shù)輸出q與當(dāng)前的計(jì)數(shù)最大值m_temp進(jìn)行比較,如果q比m_temp大,則強(qiáng)制將m_temp賦給q,這樣就可以自動(dòng)避免計(jì)數(shù)失控,不必再增加手動(dòng)的復(fù)位控制端。 3 仿真結(jié)果分析 該多功能可變模計(jì)數(shù)器在QuartusⅡ開(kāi)發(fā)環(huán)境下進(jìn)行了仿真驗(yàn)證,功能仿真波形如圖4所示,時(shí)序仿真波形如圖5所示。 仿真結(jié)果分析如下: (1)clk為時(shí)鐘信號(hào),由時(shí)鐘信號(hào)的上升沿觸發(fā)計(jì)數(shù); (2)m為模值輸入端,當(dāng)其變化時(shí),計(jì)數(shù)容量相應(yīng)發(fā)生變化; (3)clr為清零控制端,當(dāng)其為高電平時(shí)清零; (4)s為置數(shù)控制端,當(dāng)其為高電平時(shí)將置數(shù)輸入端d的數(shù)據(jù)加載到輸出端q; (5)en為使能控制端,當(dāng)其為高電平時(shí)正常計(jì)數(shù),當(dāng)其為低電平時(shí)暫停計(jì)數(shù); (6)updn為計(jì)數(shù)方向控制端,當(dāng)其為高電平時(shí)計(jì)數(shù)器加法計(jì)數(shù),當(dāng)其為低電平時(shí)計(jì)數(shù)器減法計(jì)數(shù)。 4 結(jié) 語(yǔ) 這里所設(shè)計(jì)的多功能可變模計(jì)數(shù)器在QuartusⅡ開(kāi)發(fā)環(huán)境下進(jìn)行了仿真驗(yàn)證后,下載到湖北眾友科技實(shí)業(yè)股份有限公司的ZY11EDA13BE實(shí)驗(yàn)箱中進(jìn)行了硬件驗(yàn)證。該實(shí)驗(yàn)箱使用ACEX1K系列EP1K30QC208芯片作為核心芯片.實(shí)驗(yàn)證明設(shè)計(jì)正確,功能完整,運(yùn)行穩(wěn)定。另外,該設(shè)計(jì)的多功能可變模計(jì)數(shù)器可根據(jù)需要將模值的最大值由99進(jìn)一步擴(kuò)展,獲得更高的計(jì)數(shù)模值。 |