【文章內(nèi)容簡介】
包括輸出頻率穩(wěn)定度。Tektronix公司的TDS 1012示波器不能顯示小于10Hz的信號頻率。通過重新選擇圖64所示電路的電阻或者電容值,使電路輸出信號頻率滿足示波器測量要求。觀察顯示的測量頻率值,將會發(fā)現(xiàn)電路輸出頻率的穩(wěn)定數(shù)據(jù)只有4位有效數(shù)字,TDS 1012示波器顯示的信號頻率具有6位有效數(shù)字。555電路輸出信號頻率穩(wěn)定度較低,這是由于它是基于RC振蕩器的工作原理所限制。各種信號產(chǎn)生器的工作原理以及特點(diǎn)可以參考《高頻電子線路》課程。 如果希望時鐘輸出信號的頻率具有較高的穩(wěn)定度,可以采用晶體振蕩器。圖65給出一種常用的晶體振蕩器電路。圖65 晶體振蕩器電路圖圖65所示的晶體振蕩器電路測量數(shù)據(jù)如表64所示。表中測量數(shù)據(jù)同樣由3個獨(dú)立電路的測量獲得。電路輸出信號的頻率測量使用Tektronix公司的TDS 1012示波器完成。表64 晶體振蕩器電路測量數(shù)據(jù)表測量電路晶體標(biāo)注值(MHz)輸出頻率測量值(MHz)絕對誤差(MHz)相對誤差(%)123比較表63和表64所示的測量數(shù)據(jù)可以看出,相對基于RC振蕩器原理的555定時器時鐘產(chǎn)生電路,晶體振蕩器不僅具有較高的設(shè)計精度,而且輸出信號頻率的穩(wěn)定度也高。雖然交通燈控制電路這樣的應(yīng)用系統(tǒng)對時間精度要求不是很高,但是高的時鐘頻率穩(wěn)定度對許多其它應(yīng)用系統(tǒng)是必須的。電子市場出售的晶體的工作頻率通常在1MHz以上,本設(shè)計采用4MHz晶體主要是價格上的原因。晶體振蕩器輸出信號頻率比要求的狀態(tài)轉(zhuǎn)換頻率高,要獲取所需頻率的信號可用分頻電路來實(shí)現(xiàn)。這樣的分頻電路如果使用標(biāo)準(zhǔn)邏輯器件實(shí)現(xiàn)將需要多級電路,使得電路規(guī)模加大。使用可編程邏輯器件,采用VHDL語言將大大地減小這個困難。例61:設(shè)計一個能把4MHz的晶體振蕩器輸出信號轉(zhuǎn)換成占空比為50%,頻率為1Hz的系統(tǒng)時鐘的分頻電路。LIBRARY ieee。 USE 。 ENTITY l0601 IS PORT (clk: IN STD_LOGIC。 定義4MHz時鐘輸入端口 clk_1hz: OUT STD_LOGIC)。 定義1Hz時鐘輸出端口END l0601。 ARCHITECTURE l0601 OF l0601 IS SIGNAL aqi: INTEGER RANGE 0 TO 4000000。 BEGIN PROCESS(clk) 計數(shù)進(jìn)程 BEGIN IF (clk39。EVENT AND clk = 39。139。) THEN IF (aqi 3999999) THEN aqi = aqi + 1。 ELSE aqi = 0。 END IF。 END IF。 END PROCESS。 PROCESS(clk, aqi) 1Hz時鐘產(chǎn)生進(jìn)程 BEGIN IF (clk39。EVENT AND clk = 39。139。) THEN IF (aqi 1999999) THEN clk_1hz = ‘0’。 ELSE clk_1hz = ‘1’。 END IF。 END IF。 END PROCESS。 END l0601。 可編程邏輯器件選用EPM7128SLC8415,利用Quartus II對例61進(jìn)行處理,占用資源如表65所示。表65 資源占用數(shù)據(jù)表優(yōu)化技術(shù)宏單元占用情況用戶輸入/輸出管腳占用情況時鐘clk最高頻率(MHz)速度優(yōu)先55 / 128(43%)6 / 68(9%)平衡性能55 / 128(43%)6 / 68(9%)資源優(yōu)先26 / 128(20%)6 / 68(9%)使用同樣型號的芯片,使用不同的優(yōu)化技術(shù)對設(shè)計文件進(jìn)行綜合獲得的性能指標(biāo)是不同的。采用速度優(yōu)先的優(yōu)化技術(shù),占用芯片資源較多,但是系統(tǒng)可能達(dá)到的工作速度較快;采用資源優(yōu)先優(yōu)化技術(shù),占用芯片資源較少,但是系統(tǒng)可能達(dá)到的工作速度較慢。對于這里進(jìn)行的交通燈控制系統(tǒng)設(shè)計是一個低速工作系統(tǒng),采用資源優(yōu)先優(yōu)化技術(shù)是合適的選擇,這樣即節(jié)約了芯片資源,也滿足所選用的時鐘頻率。例61的實(shí)體中只定義了2個輸入/輸出管腳,接收晶體振蕩器輸出信號的輸入管腳clk和輸出交通燈控制系統(tǒng)所需的1Hz系統(tǒng)時鐘的輸出管腳clk_1Hz。表65所示的用戶輸入/輸出管腳占用情況顯示占用了6個輸入/輸出管腳,這是因?yàn)檎加们闆r中包括了系統(tǒng)編程所需要的JTAG接口的4個管腳:TDI、TDO、TMS和TCK。優(yōu)化設(shè)置可以利用菜單“Assignments → Settings …→ Analysis amp。 Synthesis Settings ”在“Optimization Technique”多選欄目中進(jìn)行。例61采用2個進(jìn)程實(shí)現(xiàn)在4MHz時鐘信號的控制下產(chǎn)生1Hz的系統(tǒng)時鐘。第一個進(jìn)程,計數(shù)進(jìn)程,每來4000000個時鐘信號完成一個循環(huán);第二個進(jìn)程,1Hz時鐘產(chǎn)生進(jìn)程,產(chǎn)生50%占空比的1Hz系統(tǒng)時鐘。改變1Hz時鐘產(chǎn)生進(jìn)程中的比較常數(shù)可以改變所產(chǎn)生時鐘信號的占空比??紤]到分布電容的存在,時鐘信號的占空比不能太小,也不能太大,尤其是在高頻率情況下。采用一個進(jìn)程也可以產(chǎn)生1Hz的系統(tǒng)時鐘。下面僅列出1Hz時鐘信號產(chǎn)生電路的主要設(shè)計部分。例62:已知輸入的時鐘信號頻率為4MHz,設(shè)計一個產(chǎn)生1Hz時鐘信號的電路。PROCESS(clk) BEGIN IF (clk39。EVENT AND clk = 39。139。) THEN IF (aqi 3999999) THEN aqi = aqi + 1。 clk_1hz = ‘0’。 ELSE aqi = 0。 clk_1hz = ‘1’。 END IF。 END IF。 END PROCESS。 例62使用一個進(jìn)程產(chǎn)生1Hz的系統(tǒng)時鐘,但是時鐘的占空比不能調(diào)整,而且很小,在上面例子中為1/4000000。由于芯片內(nèi)部存在的分布電容存在充放電過程,時鐘的占空比太大或者太小都不合適,占空比太大或者太小都有可能引起系統(tǒng)工作不穩(wěn)定。涉及到時鐘問題的還有圖65所示的晶體振蕩器電路中芯片的選擇。如果采用74HC04,由于CMOS技術(shù)芯片輸出電流比TTL技術(shù)芯片輸出電流小,實(shí)際應(yīng)用顯示,這也有可能引起系統(tǒng)工作不穩(wěn)定。 狀態(tài)產(chǎn)生電路由系統(tǒng)設(shè)計中描述的交通燈控制電路硬件組成框圖可知,狀態(tài)產(chǎn)生電路的輸入信號是頻率為1Hz的系統(tǒng)時鐘,輸出為交通燈和時間信號產(chǎn)生電路所需要的30個狀態(tài)信號。利用VHDL語言實(shí)現(xiàn)狀態(tài)產(chǎn)生電路功能的代碼非常類似于例61中的分頻進(jìn)程,實(shí)際代碼如例63所示。例63:設(shè)計交通燈狀態(tài)產(chǎn)生電路。LIBRARY ieee。 USE 。 ENTITY l0603 IS PORT (clk_1hz: IN STD_LOGIC。 定義1Hz系統(tǒng)時鐘輸入端口 state: OUT INTEGER RANGE 0 TO 29)。 定義狀態(tài)輸出端口END l0603。 ARCHITECTURE l0603 OF l0603 IS SIGNAL state_temp: INTEGER RANGE 0 TO 29。 狀態(tài)暫存信號BEGIN PROCESS(clk_1hz) 狀態(tài)產(chǎn)生進(jìn)程 BEGIN IF (clk_1hz 39。EVENT AND clk_1hz = 39。139。) THEN IF (state_temp 29) THEN state_temp = state_temp + 1。 ELSE state_temp = 0。 END IF。 END IF。 END PROCESS。 state = state_temp。 END l0603。 例63