【正文】
模塊是其內(nèi)部功能模塊。用自頂向下的模塊化方法進(jìn)行 CPLD內(nèi)部設(shè)計(jì) ,各模塊設(shè)計(jì)用 VHDL語(yǔ)言實(shí)現(xiàn) ,將電 路的硬件設(shè)計(jì)轉(zhuǎn)化為軟件設(shè)計(jì)。而 CPLD內(nèi)部設(shè)計(jì)的核心是 CPLD內(nèi)部模塊中的鎖存 /解鎖及定時(shí)控制模塊的設(shè)計(jì) ,主要起鎖存 /解鎖控制作用。顯示譯碼驅(qū)動(dòng)模塊采用掃描譯碼形式 ,也就是讓 LED輪流顯示 ,當(dāng)掃描速度夠快時(shí)看起來(lái)就像是 LED同時(shí)在顯示。如果采用傳統(tǒng)的譯碼電路輸出與 LED的輸入之間的獨(dú)立連接形式 ,則占用過(guò)多的 CPLD資源 ,增加了硬件部分設(shè)計(jì)的難度。此設(shè)計(jì)中掃描譯碼控制的時(shí)鐘信號(hào)由分頻模塊產(chǎn)生 ,選用 512Hz。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 4 圖 31 8 路搶答器控制系統(tǒng)結(jié)構(gòu)框圖 圖 32 8路搶答器原理圖 硬件設(shè)計(jì)中各模塊的設(shè)計(jì) 搶答器的邏輯結(jié)構(gòu)主要由搶答鑒別鎖存模塊、定時(shí)模塊、譯碼模塊和報(bào)警器模塊組成。在整個(gè)搶答器中最關(guān)鍵的是如何實(shí)現(xiàn)搶答封鎖,在控制鍵按下的同時(shí)計(jì)數(shù)器倒計(jì)時(shí)顯示有效剩余時(shí)間。除此之外,整個(gè)搶答器還需有一個(gè)“復(fù)位開(kāi)始”信號(hào),以便搶答器能實(shí)現(xiàn)清零和開(kāi)始。搶答器共有 3 個(gè)輸出顯示,選手代號(hào)、計(jì)數(shù) 器的個(gè)位和十位,他們輸出全都為 BCD 碼輸出,這樣便于和顯示譯碼器連接。當(dāng)主持人按住控制鍵、選手按下?lián)尨疰I蜂鳴器短暫響起。 在這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的搶答功能,并且能實(shí)現(xiàn)當(dāng)有一路搶答按鍵大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 5 按下時(shí),該路搶答信號(hào)能將其余各路搶答封鎖的功能。在這個(gè)模塊輸入端有 WARN輸入 (以時(shí)間控制系統(tǒng)的 WARN 輸出信號(hào)為信號(hào)源 )、一個(gè)和“時(shí)間控制系統(tǒng)”公用的 CLEAR 端、 8 人搶答輸入信號(hào)端 S0,S1,S2,S3,S4,S5,S6,S7 和有一個(gè)時(shí)鐘信號(hào)端CLK,這個(gè)時(shí)鐘信號(hào)是個(gè)高頻信號(hào),用以掃描 S0,S1,S2,S3,S4,S5,S6,S7 是否有信號(hào)輸入。輸出端有對(duì)應(yīng)于 8 個(gè)編號(hào)的 8 個(gè)指示燈 LED 和 8 線 2 進(jìn)制輸出端 STATES(用于鎖存當(dāng)前的狀態(tài)),還有一個(gè) STOP 端用于指示 S0,S1,S2,S3,S4,S5,S6,S7 按鈕狀態(tài)(控制計(jì)時(shí)器停止)。在此模塊中高頻時(shí)鐘信號(hào)一直作用,此時(shí),若主持人按下CLEAR 即為開(kāi)始搶答信號(hào),所有輸出端都自動(dòng)清零。在有效時(shí)間范圍( N 秒)內(nèi)只要有人搶答, STOP 就有高電平輸出至“時(shí)間控制系統(tǒng)”的 STOP 端以控制倒計(jì)時(shí)的停止,并且對(duì)應(yīng)的 LED 指示燈點(diǎn)亮, STATES 鎖存輸出到譯 碼顯示模塊,用以顯示優(yōu)先搶答人的組號(hào),并鎖定輸入端 S 以阻止系統(tǒng)響應(yīng)其他搶答者的信號(hào)。當(dāng)有效時(shí)間到了之后還沒(méi)有人搶答,則記時(shí)模塊發(fā)出報(bào)警信號(hào),同時(shí)反饋回來(lái)給搶答鑒別模塊,禁止選手在搶答。 將搶答過(guò)程中鎖存的 BCD 碼轉(zhuǎn)換成 7 段碼用于 LED 的顯示。 這個(gè)模塊的輸入端有時(shí)鐘信號(hào) CLK、系統(tǒng)復(fù)位信號(hào) CLEAR 和一個(gè) STOP 輸入信號(hào);輸出端有時(shí)間狀態(tài)顯示信號(hào)高位 HIGH 和低位 LOW,無(wú)人搶答時(shí)計(jì)時(shí)中止警報(bào)信號(hào) WARN。 這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的計(jì)時(shí)功能,在搶答開(kāi)始后進(jìn)行 N 秒的倒計(jì)時(shí),并且在 N 秒倒計(jì)時(shí)后無(wú)人搶答的情況下顯示超時(shí)并輸出信號(hào)至 WARN 報(bào)警,或者只要 N 秒內(nèi)有人搶答,由搶答鑒別模塊輸出的 STOP 信號(hào)控制停止計(jì)時(shí),并顯示優(yōu)先搶答者的搶答時(shí)刻,輸出一個(gè)信號(hào)經(jīng) WARN 傳至“搶答鑒別系統(tǒng)”,鎖存不再讓選手搶答。 在這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的報(bào)警功能,當(dāng)主持人按下控制鍵,有限時(shí)間內(nèi)( N 秒內(nèi))有人搶答或是倒計(jì)時(shí)到了之后蜂鳴器開(kāi)始報(bào)警,輸出 SOUND 有效電平為高。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 6 單元電路 VHDL 設(shè)計(jì) 實(shí)體設(shè)計(jì) 在端口處共設(shè)計(jì) 8個(gè)輸出端口和 10個(gè)輸 入端口。其中主持人控制端口 (1個(gè) )、脈沖端口( 1個(gè))、 8人搶答端口是其輸入端口部分。而 8字管輸出管端口和蜂鳴器輸出端口( 1個(gè))是其輸出端口部分。下面的 VHDL代碼為 8路搶答器實(shí)體部分代碼 : ENTITY barenqiangda IS PORT(s: IN STD_LOGIC_VECTOR(7downto 0)。 [對(duì)八 人搶答的輸入端口進(jìn)行定義 ] reset,clk: IN STD_LOGIC。 [對(duì) 主持人復(fù)位和脈沖端口進(jìn)行定義 ] a: OUT STD_LOGIC_VECTOR(0downto6)。 [對(duì) 8字管輸出端口進(jìn)行定義 ] bell: OUT STD_LOGIC)。 [對(duì) 蜂鳴器輸出端口進(jìn)行定義 ] END barenqiangda。 VHDL 構(gòu)造體的設(shè)計(jì)部分 以并行處理語(yǔ)句 進(jìn)程 (PROCESS)語(yǔ)句為基本語(yǔ)句的 8 路搶答器實(shí)體部分 , 其程序以脈沖、復(fù)位和 8人搶答信號(hào)為敏感信號(hào) ,當(dāng)其有變化時(shí) ,進(jìn)程被激活 ,從而 內(nèi)部語(yǔ)句按順序開(kāi)始執(zhí)行。 構(gòu)造體部分的 VHDL語(yǔ)言 代碼 : ARCHITECTURE a OF barenqiangda IS SIGNAL g: STD_LOGIC_VECTOR(7downto0)。 [對(duì) 信號(hào)進(jìn)行定義 ] SIGNAL b: STD_LOGIC。 BEGIN PROCESS (s,reset,clk) [并行語(yǔ)句 ,三個(gè)敏感信號(hào) ] BEGIN IF(reset=39。139。) THEN [判斷主持人復(fù)位鍵是否啟動(dòng) ,若啟動(dòng) ,則清零 ] h=39。039。 g=00000000。 ELSIF(clk39。EVENT AND clk=39。 139。 ) THEN IF(s(7)=39。139。OR g(0)=39。139。) AND NOT(g(1)=39。139。ORg(2)=39。139。ORg(3)=39。139。ORg(4)=39。139。ORg(5)=39。139。ORg(6)=39。139。ORg(7)=39。139。)[判斷按鍵 1按下與否 ] THEN g(0)=39。139。 [鎖存按鍵 1狀態(tài) ] 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 7 END IF。 ?? [按鍵 27狀態(tài)代碼略 ] IF(s(7)=39。139。 OR g(7)=39。 139。 ) AND NOT(g(0)=39。 139。 OR g(1)=39。 139。 OR g(2)=39。 139。 OR g(3)=39。 139。 OR g(4)=39。 139。 OR g(5)=39。 139。OR g(6)=39。 139。 ) [判斷按鍵 8按下與否 ] THEN g(7)=39。 139。 。 [鎖存按鍵狀 態(tài) ] END IF。 h=s(0)OR s(1)OR s(2)OR s(3)OR s(4)OR s(5)OR s(6)OR s(7)。 END IF。 END PROCESS。 Bell=b。 [蜂鳴器輸出 ] a=0000110WHEN g=00000001ELSE[數(shù)碼管輸出顯示 1] ?? [數(shù)碼 27輸出代碼略 ] 1111111WHEN g=10000000ELSE [數(shù)碼管輸出顯示 8] 1111110。 END a。 VHDL 程序 將搶答過(guò)程中鎖存的 BCD 碼 轉(zhuǎn)換成 7 段碼用于 LED 的顯示。 LIBRARY IEEE。 USE 。 USE 。 ENTITY CODE IS PORT(INSTATES: IN STD_LOGIC_VECTOR(7 DOWNTO 0)。 QOUT: OUT STD_LOGIC_VECTOR(7DOWNTO 0))。 END CODE。 ARCHITECTURE TWO OF CODE IS BEGIN PROCESS(INSTATES) BEGIN CASE INSTATES IS WHEN 0000=QOUT=0111111。 WHEN 0001=QOUT=0000110。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 8 WHEN 0010=QOUT=1011011。 WHEN 0011=QOUT=1001111。 WHEN 0100=QOUT=1100110。 WHEN 0101=QOUT=1101101。 WHEN 0110=QOUT=1111101。 WHEN 0111=QOUT=0000111。 WHEN 1000=QOUT=1111111。 WHEN OTHERS=QOUT=0000000。 END CASE。 END PROCESS。 END ARCHITECTURE TWO。 VHDL 程序 這個(gè)模塊的輸入端有時(shí)鐘信號(hào) CLK、系統(tǒng)復(fù)位信號(hào) CLEAR 和一個(gè) STOP 輸入信號(hào);輸出端有秒時(shí)間狀態(tài)顯示信號(hào)高位 HIGH 和低位 LOW,無(wú)人搶答時(shí)計(jì)時(shí)中止警報(bào)信號(hào) WARN。 這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的計(jì)時(shí)功能,在搶答開(kāi)始后進(jìn)行 N 秒的倒計(jì)時(shí),并且在 N 秒倒計(jì)時(shí)后無(wú)人搶答的情況下顯示超時(shí)并輸出信號(hào)至 WARN 報(bào)警,或者只要 N 秒內(nèi)有人搶答,由搶答鑒別模塊輸出的 STOP 信號(hào)控制停止計(jì)時(shí),并顯示優(yōu)先搶 答者的搶答時(shí)刻,輸出一個(gè)信號(hào)經(jīng) WARN 傳至“搶答鑒別系統(tǒng)”,鎖存不再讓選手搶答。 LIBRARY IEEE。 USE 。 USE 。 ENTITY COUNT IS PORT(CLK,CLEAR,STOP:IN STD_LOGIC。 WARN:OUT STD_LOGIC。 HIGH,LOW:OUT STD_LOGIC_VECTOR(7 DOWNTO 0))。 END COUNT。 ARCHITECTURE THREE OF COUNT IS SIGNAL HS:STD_LOGIC_VECTOR(7 DOWNTO 0)。 SIGNAL LS:STD_LOGIC_VECTOR(7DOWNTO 0)。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 9 BEGIN PROCESS(CLK) BEGIN IF CLEAR=39。139。 THEN HS=1001。LS=1001。WARN=39。039。 ELSIF CLK39。EVENT AND CLK=39。139。 THEN LS=LS1。 IF LS=0000 THEN LS=1001。HS=HS1。 IF HS=0000 AND LS=0000 THEN WARN=39。139。HS=0000。LS=0000。 IF STOP=39。139。 THEN HS=HS。 LS=LS。 WARN=39。139。 END IF。 END IF。 END IF。 END IF。 HIGH=HS。LOW=LS。 END PROCESS。 END ARCHITECTURE THREE。 VHDL程序 在這個(gè)模塊中主要實(shí)現(xiàn)搶答過(guò)程中的報(bào)警功能,當(dāng)主持人按下控制鍵,有限時(shí)間內(nèi)( N 秒內(nèi))有人搶答或是倒計(jì)時(shí)到了之后蜂鳴器開(kāi)始報(bào)警,輸出 SOUND 有效電平為高 。 LIBRARY IEEE。 USE 。 ENTITY ALARM IS PORT(CLEAR,WARN:IN STD_LOGIC。 SOUND:OUT STD_LOGIC)。 大慶師范學(xué)院本科畢業(yè)論文(設(shè)計(jì)) 10 END 。 ARCHITECTURE FOUR OF ALARM IS BEGIN PROCESS(WARN,CLEAR) BEGIN IF CLEAR=39。139。 THEN SOUND=39。039。 ELSIF WARN=39。139。 THEN SOUND=39。139。 ELSE SOUND=39。039。 END IF。 END PROCESS。 END 。 大慶師范學(xué)院本科畢業(yè)論文 (設(shè)計(jì) ) 11 第四章 仿真驗(yàn)證 仿真驗(yàn)證 編譯成功后進(jìn)行仿真,驗(yàn)證設(shè)計(jì)的可行性。首先建立波形文件 ,在波形文件中加入仿真所需的輸入輸出變量 ,并將信號(hào)結(jié)點(diǎn)成組 ,以 方便查看仿真結(jié)果。進(jìn)而選擇仿真的時(shí)間長(zhǎng)度、仿真的時(shí)間間隔 ,并合理設(shè)置輸入變量的取值等。建好波形文件并存盤(pán)后 ,選擇菜單 ,進(jìn)行仿真操作 ,成形后根據(jù)所顯示的仿真波形 ,進(jìn)行設(shè)計(jì)驗(yàn)證。圖 41中從波形來(lái)看 ,此設(shè)置使得 輸出各變量的值均滿足要求 ,驗(yàn)證 本 設(shè)計(jì)的思路及程序是正確的。可按 圖 41仿真波形 的 驗(yàn)證