【文章內(nèi)容簡(jiǎn)介】
CNTER=0000000000000000000000000。 CNTEER=NOT CNTEER。 ELSE CNTER=CNTER+1。 END IF 。 END IF 。 END PROCESS。 CLK500=CNTEER。 END ART。CLKGEN模塊的源程序?yàn)椋篖IBRARY IEEE。USE 。USE 。ENTITY CLKGEN ISPORT( CLK :IN STD_LOGIC 。 NEWCLK: OUT STD_LOGIC)。END CLKGEN。ARCHITECTURE ART OF CLKGEN IS SIGNAL CNTER:STD_LOGIC_VECTOR(24 DOWNTO 0)。 SIGNAL CNTEER:STD_LOGIC。 BEGIN PROCESS(CLK) BEGIN IF (CLK39。EVENT AND CLK=39。139。) THEN IF CNTER=249 THEN CNTER=0000000000000000000000000。 CNTEER=NOT CNTEER。 ELSE CNTER=CNTER+1。 END IF 。 END IF 。 END PROCESS。 NEWCLK=CNTEER。 END ART。:仿真分析:輸入信號(hào)CLK 的頻率為10MHZ,輸出信號(hào)CLK500的頻率為500HZ。圖2. 4CLKGEN 分頻模塊仿真波形仿真分析:輸入信號(hào)CLK的頻率為500HZ,輸出NEWCLK的頻率為1HZ。 測(cè)頻時(shí)序控制電路模塊,CLK為由基準(zhǔn)脈沖信號(hào)產(chǎn)生模塊產(chǎn)生的頻率為1HZ的標(biāo)準(zhǔn)時(shí)鐘信號(hào)NEWCLK,測(cè)頻時(shí),將頻率為1HZ的標(biāo)準(zhǔn)時(shí)鐘信號(hào)NEWCLK送入控制電路輸入端CLK,輸出端包括一個(gè)計(jì)數(shù)使能輸出端TSTEN,一個(gè)是清零信號(hào)輸入端CLR_CNT和一個(gè)數(shù)據(jù)鎖存輸出端LOAD。使能信號(hào)TSTEN對(duì)頻率計(jì)中10個(gè)十進(jìn)制計(jì)數(shù)器的使能端ENA進(jìn)行同步控制,當(dāng)TSTEN為高電平時(shí)允許計(jì)數(shù),低電平時(shí)停止計(jì)數(shù),停止計(jì)數(shù)期間,測(cè)頻時(shí)序控制模塊TESTCTL的鎖存信號(hào)LOAD端輸出上升沿,將計(jì)數(shù)值鎖存到REG40B鎖存器中。測(cè)頻控制模塊TESTCTL的CLR_CNT端產(chǎn)生一個(gè)上升沿,對(duì)計(jì)數(shù)器進(jìn)行清零。為下一秒的計(jì)數(shù)操作做準(zhǔn)備。為了實(shí)現(xiàn)系統(tǒng)功能,測(cè)頻時(shí)序控制模塊TESTCTL,計(jì)數(shù)器CNT10,以及鎖存器REG40B存在一個(gè)工作時(shí)序的問(wèn)題,設(shè)計(jì)時(shí)需要綜合考慮。,首先要有一個(gè)D觸發(fā)器構(gòu)成二分頻器,在每次時(shí)鐘CLK上升沿到來(lái)使其值翻轉(zhuǎn)。觸發(fā)器的輸出高電平正好是1S,即測(cè)頻時(shí)序控制模塊TESTCTL的TSTEN端時(shí)鐘脈沖信號(hào)的脈寬為1S,并對(duì)頻率計(jì)的每一計(jì)數(shù)器CNT10的ENA使能端進(jìn)行同步控制。而LOAD信號(hào)正好是TSTEN端信號(hào)的翻轉(zhuǎn)。在計(jì)數(shù)結(jié)束后半個(gè)CLK周期,CLK與TSTEN都為低電平,這時(shí)CLR_CNT產(chǎn)生一個(gè)上升沿作為清零信號(hào)。 測(cè)頻時(shí)序控制電路模塊源程序:LIBRARY IEEE。USE 。USE 。ENTITY TESTCTL IS PORT(CLK:IN STD_LOGIC。 TSTEN:OUT STD_LOGIC。 CLR_CNT:OUT STD_LOGIC。 LOAD: OUT STD_LOGIC)。END TESTCTL。ARCHITECTURE ART OF TESTCTL ISSIGNAL Div2CLK:STD_LOGIC。BEGINPROCESS(CLK)BEGIN IF CLK39。EVENT AND CLK=39。139。 THEN Div2CLK=NOT Div2CLK。 END IF。END PROCESS。PROCESS(CLK,Div2CLK)BEGIN IF CLK=39。039。AND Div2CLK=39。039。THEN CLR_CNT=39。139。 ELSE CLR_CNT=39。039。 END IF 。END PROCESS。LOAD=NOT Div2clk。TSTEN=Div2CLK。END ART。 該計(jì)數(shù)模塊主要有10個(gè)十進(jìn)制計(jì)數(shù)器CNT10級(jí)聯(lián)而成,具有復(fù)位和使能控制功能,主要是在閥門時(shí)間內(nèi)對(duì)被測(cè)信號(hào)FSIN頻率進(jìn)行計(jì)數(shù)。測(cè)頻時(shí), 測(cè)頻時(shí)序控制電路模塊TESTCTL的TSTEN端時(shí)鐘脈沖信號(hào)的脈寬為1S,TSTEN高電平期間允許各個(gè)計(jì)數(shù)器工作,低電平期間停止計(jì)數(shù)并保持計(jì)數(shù)值。測(cè)頻控制模塊TESTCTL的CLR_CNT端產(chǎn)生一個(gè)上升沿,并對(duì)頻率計(jì)的每一計(jì)數(shù)器CNT10的CLR端進(jìn)行同步控制,對(duì)計(jì)數(shù)器進(jìn)行清零。當(dāng)測(cè)頻時(shí)序控制模塊TESTCTL的鎖存信號(hào)LOAD端輸出上升沿時(shí),將計(jì)數(shù)值DIN(39 DOWNTO 0),使低位計(jì)數(shù)器CNT10的CARRY_OUT端與高位計(jì)數(shù)器CNT10的輸入時(shí)鐘位CLK相連。首個(gè)計(jì)數(shù)器CNT10的CLK端外接被測(cè)信號(hào)FSIN,該計(jì)數(shù)模塊的輸出信號(hào)為有低位到高位的10組4位二進(jìn)制表示的十進(jìn)制數(shù),用來(lái)分別表示被測(cè)信號(hào)的個(gè)、十、百、千等位的數(shù)值。位數(shù)越高頻率測(cè)量的范圍也越寬,此測(cè)量范圍由計(jì)數(shù)電路內(nèi)部的十進(jìn)制計(jì)數(shù)器的個(gè)數(shù)來(lái)決定。 元件符號(hào)圖 ,CARRY_OUT 是計(jì)數(shù)器進(jìn)位輸出;COUNT10(3 DOWNTO 0)是計(jì)數(shù)器的狀態(tài)輸出;CLK是時(shí)鐘輸入端;ENA是使能控制輸入端,當(dāng)ENA=1時(shí),計(jì)數(shù)器計(jì)數(shù),當(dāng)ENA=0時(shí),計(jì)數(shù)器保持狀態(tài)不變。 具有同步使能端的十進(jìn)制計(jì)數(shù)器源程序?yàn)椋?LIBRARY IEEE。 USE 。 USE 。 ENTITY CNT10 IS PORT( CLK:IN STD_LOGIC。 計(jì)數(shù)時(shí)鐘信號(hào) CLR:IN STD_LOGIC。 清零信號(hào) ENA:IN STD_LOGIC。 計(jì)數(shù)使能信號(hào) COUNT10:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0)。 4位計(jì)數(shù)結(jié)果輸出 CARRY_OUT:OUT STD_LOGIC 計(jì)數(shù)進(jìn)位 )。 END CNT10。 ARCHITECTURE ART OF CNT10 IS SIGNAL CQI: STD_LOGIC_VECTOR(3 DOWNTO 0)。 BEGIN PROCESS(CLK,CLR,ENA) BEGIN IF CLR=39。139。THEN CQI=0000。 計(jì)數(shù)器異步清零 ELSIF CLK39。EVENT AND CLK=39。139。THEN IF ENA=39。139。THEN IF CQI=1001THEN CQI=0000。 等于9,則計(jì)數(shù)器清零 ELSE CQI=CQI+39。139。 END IF。 END IF。 END IF。 END PROCESS。 PROCESS(CQI) BEGIN IF CQI=1001THEN CARRY_OUT=39。139。 進(jìn)位輸出 ELSE CARRY_OUT=39。039。 END IF。 END PROCESS。 COUNT10=CQI。 END ART。仿真分析:在使能端ENA高電平期間,清零信號(hào)CLR為低電平時(shí),CNT10計(jì)數(shù)器以十進(jìn)制計(jì)數(shù),計(jì)數(shù)到9后,進(jìn)位CARRY_OUT輸出為高電平,在下一個(gè)時(shí)鐘信號(hào)CLK上升沿到來(lái)時(shí),計(jì)數(shù)器清零。在使能端ENA為低電平時(shí),計(jì)數(shù)器不能啟動(dòng)。當(dāng)清零信號(hào)CLR為高電平時(shí),計(jì)數(shù)器清零。 鎖存器模塊 ,主要作用為鎖存計(jì)數(shù)器的計(jì)數(shù)值。設(shè)置鎖存器可以使數(shù)據(jù)顯示穩(wěn)定可靠,不會(huì)由于周期性的清零信號(hào)而使數(shù)碼管不斷閃爍。測(cè)頻時(shí)序控制模塊TESTCTL的鎖存信號(hào)LOAD端輸出上升沿,將計(jì)數(shù)值鎖存到REG40B鎖存器中,并由REG40B的輸出端輸出。鎖存器模塊的源程序:LIBRARY IEEE。USE 。ENTITY REG40B ISPORT( LOAD :IN STD_LOGIC。 鎖存信號(hào)時(shí)鐘 DIN: IN STD_LOGIC_VECTOR(39 DOWNTO 0)。 鎖存器輸入信號(hào) DOUT: OUT STD_LOGIC_VECTOR(39 DOWNTO 0) 鎖存器輸出信號(hào) )。END REG40B。ARCHITECTURE ART OF REG40B ISBEGINPROCESS(LOAD,DIN)BEGINIF LOAD39。EVENT AND LOAD=39。139。 THEN DOUT=DIN。 LOAD上升沿到來(lái)后END IF。 鎖存END PROCESS。 END ART。 波形仿真REG40B波形仿真分析:輸入信號(hào)DIN為40位數(shù)據(jù)0000 0000 0000 0000 0000 0000 0000 0000 0001 1000,測(cè)頻時(shí)序控制模塊TESTCTL的鎖存信號(hào)LOAD端輸出上升沿時(shí),將計(jì)數(shù)值鎖存到REG40B鎖存器中,輸出信號(hào)DOUT為40位數(shù)據(jù)0000 0000 0000 0000 0000 0000 0000 0000 0001 1000.數(shù)字邏輯系統(tǒng)中常用的顯示器件是數(shù)碼管,每一個(gè)字段都是一個(gè)發(fā)光二極管,因而也稱之為L(zhǎng)ED數(shù)碼管或LED顯示器。LED數(shù)碼管用七段發(fā)光二極管(帶小數(shù)點(diǎn)時(shí)為8段)來(lái)顯示數(shù)字,每一段都是一個(gè)發(fā)光二極管,一般把所有段的相同的一端相連,連接到地(共陰極接法)或者是連接到電源(共陽(yáng)極接法)。共陰極LED數(shù)碼管的公共端連接到地,另一端分別接一個(gè)限流電阻后再接到控制電路的信號(hào)端,當(dāng)信號(hào)端為高電平時(shí),該段即被點(diǎn)亮,否則不亮。共陽(yáng)極接法則相反,公共端連接到電源,另一端分別接一個(gè)限流電阻后再接到控制電路的信號(hào)端,只有信號(hào)端為低電平時(shí)才被點(diǎn)亮,否則不亮。 在數(shù)字邏輯電路中,數(shù)碼管可以用TTL或CMOS集成電路來(lái)直接驅(qū)動(dòng),其驅(qū)動(dòng)方式有BCD碼驅(qū)動(dòng)和直接驅(qū)動(dòng)。BCD碼驅(qū)動(dòng)方式是用74LS48(共陽(yáng)極七段顯示驅(qū)動(dòng)器)、74LS49(共陰極七段顯示驅(qū)動(dòng)器)譯碼驅(qū)動(dòng)電路來(lái)控制數(shù)碼管顯示。直接驅(qū)動(dòng)方式是直接對(duì)數(shù)碼管相應(yīng)的字段給出驅(qū)動(dòng)電平,以顯示電平。 74LS48是一種實(shí)現(xiàn)碼型轉(zhuǎn)換的譯碼芯片。碼型轉(zhuǎn)化就是將一種編碼的輸入轉(zhuǎn)換為另一種編碼輸出。74LS48就是將BCD碼轉(zhuǎn)換成為7段數(shù)碼管顯示編碼。它是共陰極驅(qū)動(dòng)芯片,也就是在輸出高電平時(shí),該芯片具有較強(qiáng)的電流輸出能力。 七段顯示譯碼模塊將鎖存器送過(guò)來(lái)的4位BCD數(shù)字符譯成七段碼。頻率測(cè)量中,共要10個(gè)七段顯示譯碼模塊BCD。