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