搶答器、萬(wàn)年歷eda課程設(shè)計(jì)_第1頁(yè)
已閱讀1頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  課 程 設(shè) 計(jì)</p><p><b>  資 料 袋</b></p><p>  題 目 EDA數(shù)字系統(tǒng)綜合設(shè)計(jì)與實(shí)踐 </p><p>  成 績(jī) 起止日期 2013 年 1

2、1 月 18 日~ 2013 年 12 月 1 日</p><p>  目 錄 清 單</p><p><b>  課程設(shè)計(jì)任務(wù)書</b></p><p>  2013 —2014 學(xué)年度 第 1 學(xué)期</p><p>  課程名稱: 數(shù)字系統(tǒng)設(shè)計(jì)

3、 </p><p>  設(shè)計(jì)題目: EDA數(shù)字系統(tǒng)綜合設(shè)計(jì)與實(shí)踐 </p><p>  完成期限: 2013 年 11 月 18 日~ 2013 年 12 月 1 日 共 2 周</p><p&

4、gt;  指導(dǎo)教師(簽字): 2013 年 12月 1 日</p><p>  系(教研室)主任(簽字): 2013 年 12月 1 日</p><p><b>  數(shù)字系統(tǒng)設(shè)計(jì)課程</b></p><p><b&g

5、t;  設(shè) 計(jì) 說(shuō) 明 書</b></p><p>  起止日期: 2013 年 11 月 18 日~ 2013 年 12 月 1 日 共 2 周</p><p><b>  電氣與信息工程學(xué)院</b></p><p>  一 智力搶答器的設(shè)計(jì)與實(shí)現(xiàn)</p><p> ?。ㄒ唬┫到y(tǒng)設(shè)計(jì)要

6、求:</p><p>  在許多比賽活動(dòng)中,為了準(zhǔn)確、直觀地判斷搶答者,通常設(shè)置一臺(tái)搶答器,并通過(guò)燈光、聲響、數(shù)碼管等顯示出第一搶答者,同時(shí)還可完成計(jì)分、扣分等功能。本設(shè)計(jì)具體要求如下:</p><p> ?。?)設(shè)計(jì)一個(gè)可供四組參賽者使用的搶答器,每組設(shè)置一個(gè)搶答按鈕;</p><p> ?。?)電路具有第一搶答信號(hào)的鑒別功能,當(dāng)主持人按下清零復(fù)位鍵后,開始搶答,

7、將第一搶答者組別實(shí)現(xiàn)出來(lái)(數(shù)碼管顯示組號(hào),LED指示燈點(diǎn)亮,并發(fā)出“嘀”的聲音);</p><p> ?。?)設(shè)置計(jì)分電路,四組參賽者在開始時(shí)預(yù)置成100分。搶答后回答正確的加10分,錯(cuò)誤則扣10分,將計(jì)分結(jié)果用數(shù)碼管顯示出來(lái);</p><p> ?。?)設(shè)置總顯示按鈕,當(dāng)主持人按下按鈕后,可將每組的得失分情況用數(shù)碼管直觀地顯示出來(lái)。</p><p> ?。ǘ┫?/p>

8、統(tǒng)設(shè)計(jì)方案:</p><p>  采用自頂向下的調(diào)試方法進(jìn)行設(shè)計(jì),將設(shè)計(jì)分為搶答模塊、計(jì)分模塊、數(shù)據(jù)選擇模塊以及譯碼顯示模塊。</p><p><b> ?。?)搶答模塊</b></p><p>  主要完成4組參賽者搶答鑒別功能。</p><p>  CLR=0時(shí)輸出清零,CLR=1時(shí),A、B、C、D哪組輸入為1(用實(shí)

9、驗(yàn)箱邏輯電平開關(guān)代替搶答鍵),相應(yīng)路輸出有效信號(hào)1,并點(diǎn)亮組別指示燈。兩組同時(shí)搶答無(wú)效。</p><p>  其VHDL源程序如下:</p><p>  LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY QDJB IS  PORT(CLR:  IN STD_LOGIC;    

10、60;   A, B, C, D:  IN STD_LOGIC; --4個(gè)組       A1,B1,C1,D1:  OUT STD_LOGIC;        STATES:  OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); EN

11、D ENTITY QDJB; ARCHITECTURE ART OF QDJB IS CONSTANTW1:STD_LOGIC_VECTOR:=”0001”;CONSTANTW2:STD_LOGIC_VECTOR:=”0010”;CONSTANTW3:STD_LOGIC_VECTOR:=”0100”;CONSTANTW4:STD_LOGIC_VECTOR:=”1000”;  BEGIN  PROCE

12、SS(CLR,A,B,C,D) IS  BEGINIF CLR='1' THEN STATES<="0000";</p><p>  ELSIF(A<='1' AND B<='0' AND C<='0' AND D<='0')THEN</p><p&g

13、t;  A1<=’1’;B1<=’0’;C1<=’0’;D1<=’0’;STATES<=W1;ELSIF(A<='0' AND B<='1' AND C<='0' AND D<='0')THEN</p><p>  A1<=’0’;B1<=’1’;C1<=’0’;D1<=

14、’0’;STATES<=W2;</p><p>  ELSIF(A<='1' AND B<='0' AND C<='1' AND D<='0')THEN</p><p>  A1<=’1’;B1<=’0’;C1<=’1’;D1<=’0’;STATES<=W3;<

15、/p><p>  ELSIF(A<='0' AND B<='0' AND C<='0' AND D<='1')THEN</p><p>  A1<=’0’;B1<=’0’;C1<=’0’;D1<=’1’;STATES<=W4;</p><p><b

16、>  END IF;</b></p><p>  END PROCESS; END ARCHITECTURE ART;</p><p>  搶答鑒別模塊(QDJB)仿真波形</p><p><b>  (2)計(jì)分模塊</b></p><p>  主要完成加減計(jì)分功能。</p><

17、p>  當(dāng)有1組搶答成功后,EN1為1,啟動(dòng)該組計(jì)分模塊。CLK3為計(jì)分脈沖(用單次脈沖開關(guān)代替),ADD為加分使能鍵,為1有效。DEC為減分使能鍵,為1有效。每組初始分為100分,搶答后回答正確的加10分,錯(cuò)誤則扣10分,結(jié)果百位、十位、個(gè)位分別用4位二進(jìn)制表示。</p><p>  VHDL源程序如下:</p><p>  LIBRARY IEEE; USE IEEE.STD_

18、LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY JFQ IS  PORT(RST: IN STD_LOGIC;        ADD: IN STD_LOGIC;        CHOS: IN STD_LOGIC_VECTOR(3 D

19、OWNTO 0);       OUT1: OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END ENTITY JFQ ; ARCHITECTURE ART OF JFQ IS  BEGIN  PROCESS(RST,ADD,CHOS) IS    VARIABLE POINTS_A0: STD_LOG

20、IC_VECTOR(3 DOWNTO 0);     VARIABLE POINTS_B0: STD_LOGIC_VECTOR(3 DOWNTO 0);     VARIABLE POINTS_C0: STD_LOGIC_VECTOR(3 DOWNTO 0);     VARIABLE </p><p>  ELSIF

21、 chos="0000" then out1<="0000";END IF;END PROCESS; END ARCHITECTURE ART;</p><p>  記分模塊(JFQ)仿真波形</p><p>  (3)計(jì)時(shí)模塊JSQ</p><p>  本系統(tǒng)的計(jì)時(shí)器電路既有計(jì)時(shí)初始值的預(yù)置功能,又有減計(jì)數(shù)功能。

22、其中,初始值的預(yù)置功能是將兩位數(shù)分解成兩個(gè)數(shù)分別進(jìn)行預(yù)置。</p><p>  計(jì)時(shí)模塊(JSQ)仿真波形框圖</p><p>  其VHDL源程序如下:</p><p>  LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; </p><p&

23、gt;  ENTITY JSQ IS  PORT(CLR,LDN,EN,CLK: IN STD_LOGIC;        TA,TB:IN STD_LOGIC_vector(3 DOWNTO 0);       QA:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); --ge wei

24、       QB:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); --shi weiEND ENTITY JSQ; ARCHITECTURE ART OF JSQ IS  BEGIN  PROCESS(CLK) IS   VARIABLE TMPA:STD_LOGIC_VECTOR(3 DOWNTO 0

25、);    VARIABLE TMPB:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN    IF CLR='1' THEN TMPA:="0000"; TMPB:="0110"; --清零,倒計(jì)時(shí)60秒    ELSIF CLK'EVENT AND CLK=&#

26、39;1' THEN        IF LDN='1' THEN T</p><p>  計(jì)時(shí)模塊(JSQ)仿真波形</p><p><b> ?。?)譯碼顯示模塊</b></p><p>  主要完成數(shù)碼管動(dòng)態(tài)掃描顯示。將計(jì)分結(jié)果百位、十位、個(gè)位

27、的4位二進(jìn)制轉(zhuǎn)化為“0-9”8位字型段碼,LEDW為數(shù)碼管位選信號(hào),“000”對(duì)應(yīng)右邊第1個(gè)數(shù)碼管,“001”對(duì)應(yīng)右邊第2個(gè)數(shù)碼管,…,依此類推。CLK2為1KHZ動(dòng)態(tài)掃描脈沖。</p><p>  其VHDL源程序如下:</p><p>  LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.A

28、LL; ENTITY YMQ IS  PORT(AIN4: IN STD_LOGIC_VECTOR(3 DOWNTO 0);        DOUT7:  OUT STD_LOGIC_VECTOR(6 DOWNTO 0)); END YMQ; ARCHITECTURE ART OF YMQ ISBEGIN  PROCESS(AIN4

29、)    BEGIN    CASE AIN4 IS    WHEN "0000"=>DOUT7<="1111110";   --0    WHEN "0001"=>DOUT7<="0110000&

30、quot;;   --1    WHEN "0010"=>DOUT7<="1101101";   --2    WHEN "0011"=>DOUT7<="1111001";   --3  &

31、#160; WHEN "0100"=>DOUT7<="0110011";   --4    WHEN "0101"=></p><p>  譯碼器顯示模塊(YMQ)仿真波形</p><p><b> ?。?)頂層文件</b></p&g

32、t;<p>  其VHDL源程序如下:</p><p>  LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY qdq ISPORT(qd :IN STD_LOGIC_VECTOR (3 DOWNTO 0);     clk,en,ldn,ad

33、d,rst,clrqd,clrsj IN std_logic;     ta,tb : IN STD_LOGIC_VECTOR (3 DOWNTO 0);     qdo :OUT STD_LOGIC_VECTOR (3 DOWNTO 0);     out1 : OUT STD_LOGIC_VECTOR (3

34、DOWNTO 0);     out2 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);     out4 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);     out3 : OUT STD_LOGIC_VECTOR (3 DOWNTO 0));END;AR

35、CHITECTURE aa OF qdq ISCOMPO</p><p><b>  頂層文件仿真圖:</b></p><p>  在這個(gè)模塊中是對(duì)前幾個(gè)模塊的綜合編寫的頂層文件。</p><p><b>  頂層參考電路原理圖</b></p><p>  二 綜合計(jì)時(shí)系統(tǒng)設(shè)計(jì)與分析</p&

36、gt;<p><b>  (一)系統(tǒng)設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)一個(gè)綜合性的計(jì)時(shí)系統(tǒng),要求能實(shí)現(xiàn)年、月、日、時(shí)、分、秒及星期的計(jì)數(shù)等綜合計(jì)時(shí)功能,同時(shí)將計(jì)時(shí)結(jié)果通過(guò)15個(gè)七段數(shù)碼管顯示,并且可通過(guò)兩個(gè)設(shè)置鍵,對(duì)計(jì)時(shí)系統(tǒng)的有關(guān)參數(shù)進(jìn)行調(diào)整。具體系統(tǒng)功能面板如圖2-1所</p><p>  圖2-1 系統(tǒng)功能面板</p><

37、;p>  根據(jù)系統(tǒng)設(shè)計(jì)要求可知,本綜合計(jì)時(shí)系統(tǒng)可分成三個(gè)主要模塊:綜合計(jì)時(shí)電路、顯示控制電路和調(diào)整控制電路。其中綜合計(jì)時(shí)電路用于完成各種計(jì)時(shí)的功能,在面板上體現(xiàn)為面板上方的15個(gè)七段數(shù)碼管,依次可以顯示年、月、日、時(shí)、分、秒及星期;顯示控制電路用于完成計(jì)時(shí)結(jié)果的顯示控制及顯示譯碼等功能,集成后體現(xiàn)為面板下方左側(cè)的按鍵電路;而調(diào)整控制電路則用于調(diào)整計(jì)時(shí)系統(tǒng)的有關(guān)參數(shù),可參照面板上右下角的兩個(gè)按鍵:模式和調(diào)整。</p>

38、<p><b> ?。ǘ┫到y(tǒng)設(shè)計(jì)方案</b></p><p>  2.1綜合計(jì)時(shí)電路的設(shè)計(jì)</p><p>  根據(jù)系統(tǒng)的設(shè)計(jì)要求,綜合計(jì)時(shí)電路可分為計(jì)秒電路、計(jì)分電路、計(jì)時(shí)電路、計(jì)星期電路、計(jì)日電路、計(jì)月電路、計(jì)年電路等7個(gè)子模塊,這7個(gè)子模塊必須都具有預(yù)置、計(jì)數(shù)和進(jìn)位功能,設(shè)計(jì)思想如下: </p><p>  (1) 計(jì)秒電路:

39、以直接輸入或由分頻器產(chǎn)生的秒脈沖作為計(jì)秒電路的計(jì)數(shù)時(shí)鐘信號(hào),待計(jì)數(shù)至60瞬間,進(jìn)位,計(jì)分電路加1,而計(jì)秒電路則清零并重新計(jì)秒。</p><p>  (2) 計(jì)分電路、計(jì)時(shí)電路:其設(shè)計(jì)思想與計(jì)秒電路類似。</p><p>  (3) 計(jì)日電路:將計(jì)時(shí)電路產(chǎn)生的進(jìn)位脈沖信號(hào)作為計(jì)日電路的計(jì)數(shù)時(shí)鐘信號(hào),通過(guò)系統(tǒng)辨認(rèn),確定本月總天數(shù)X(包括28、29、30、31四種情況),待計(jì)數(shù)至X+1瞬間,進(jìn)位

40、,計(jì)月電路加1,而計(jì)日電路返回1重新開始計(jì)數(shù)。</p><p>  (4) 計(jì)星期電路:將計(jì)時(shí)電路產(chǎn)生的進(jìn)位脈沖信號(hào)作為計(jì)星期電路的計(jì)數(shù)時(shí)鐘信號(hào),待計(jì)數(shù)至7瞬間,計(jì)星期電路返回1重新開始計(jì)數(shù)。</p><p>  (5) 計(jì)月電路:將計(jì)日電路產(chǎn)生的進(jìn)位脈沖信號(hào)作為計(jì)月電路的計(jì)數(shù)時(shí)鐘信號(hào),待計(jì)數(shù)至12瞬間,進(jìn)位,計(jì)年電路加1,而計(jì)月電路返回1重新開始計(jì)數(shù)。</p><p&

41、gt;  (6) 計(jì)年電路:將計(jì)月電路產(chǎn)生的進(jìn)位脈沖信號(hào)作為計(jì)年電路的計(jì)數(shù)時(shí)鐘信號(hào),待計(jì)數(shù)至100瞬間,計(jì)年電路返回0重新開始計(jì)數(shù)。(注:由于本系統(tǒng)的計(jì)年范圍僅為2000~2099年,所以計(jì)年模塊只對(duì)年份的后兩位進(jìn)行計(jì)數(shù),年份的前兩位始終保持為“20”。)</p><p>  下面介紹CNT60、CNT30計(jì)數(shù)模塊的設(shè)計(jì)[11]。</p><p>  CNT60計(jì)數(shù)模塊是一個(gè)多用計(jì)時(shí)模塊,

42、它既可作為計(jì)秒電路調(diào)用,又可作為計(jì)分電路、計(jì)時(shí)電路調(diào)用。圖2-2是其輸入、輸出端口圖。其中,輸入信號(hào)LD為置數(shù)控制信號(hào),低電平有效;輸入信號(hào)CLK為計(jì)數(shù)時(shí)鐘信號(hào);輸入信號(hào)DATA為待預(yù)置數(shù);輸出信號(hào)NUM為計(jì)數(shù)結(jié)果;輸出信號(hào)CO為計(jì)數(shù)溢出信號(hào)。</p><p>  圖2-2 CNT60計(jì)數(shù)模塊輸入、輸出端口</p><p>  CNT30計(jì)數(shù)模塊是一個(gè)計(jì)日模塊。由于該計(jì)數(shù)模塊涉及到大小月

43、及閏年問(wèn)題,所以CNT30的計(jì)數(shù)范圍并非固定不變,而是存在1~28、1~29、1~30及1~31這四種情況。圖2-3是其輸入、輸出端口圖。其中輸入信號(hào)LD為置數(shù)控制信號(hào),低電平有效;輸入信號(hào)CLK為計(jì)數(shù)時(shí)鐘信號(hào);輸入信號(hào)DATA為待預(yù)置數(shù);輸入信號(hào)NIAN為當(dāng)前計(jì)時(shí)的年份數(shù);輸入信號(hào)YUE為當(dāng)前計(jì)時(shí)的月份數(shù);輸出信號(hào)NUM為計(jì)數(shù)結(jié)果;輸出信號(hào)CO為計(jì)數(shù)溢出信號(hào),輸出信號(hào)MAX_DAYS為當(dāng)前月的天數(shù)。</p><p&

44、gt;  圖2-3 CNT30計(jì)數(shù)模塊的輸入、輸出端口圖</p><p> ?。?)CNT60的主要VHDL程序段如下:</p><p>  IF(LD='0') THEN</p><p>  NUM<=DATA; </p><p>  ELSIF CLK'EVENT AND CLK='1' TH

45、EN</p><p>  IF NUM="111011" THEN --59</p><p>  NUM<="000000";CO<='1';</p><p><b>  ELSE </b></p><p>  NUM<=NUM+1;CO<=

46、'0';</p><p><b>  END IF;</b></p><p>  END IF; </p><p>  分析:當(dāng)置數(shù)控制模塊低電平有效時(shí),待預(yù)置數(shù)輸入,計(jì)數(shù)時(shí)鐘信號(hào)上升沿有效,當(dāng)計(jì)數(shù)范圍在0~59之間時(shí),計(jì)數(shù)結(jié)果加1;當(dāng)計(jì)數(shù)到59時(shí),再加1則產(chǎn)生進(jìn)位信號(hào),并從零開始計(jì)數(shù)。這段程序可用來(lái)被計(jì)秒、計(jì)分電路調(diào)用。&

47、lt;/p><p> ?。?)CNT30的主要VHDL程序段如下:</p><p>  IF(LD='0') THEN</p><p>  NUM<=DATA; </p><p>  ELSIF CLK'EVENT AND CLK='1' THEN</p><p>  MAX_

48、DAYS<=TOTAL_DAYS;</p><p>  IF NUM=TOTAL_DAYS THEN </p><p>  NUM<="00001";CO<='1';</p><p><b>  ELSE</b></p><p>  NUM<=NUM+1;CO&

49、lt;='0';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  分析:這段程序用來(lái)實(shí)現(xiàn)計(jì)日模塊,通過(guò)預(yù)置大小月及閏年不同的天數(shù)(MAX_DAYS代表本月總天數(shù)),如果計(jì)數(shù)到當(dāng)年當(dāng)月的天數(shù),則計(jì)數(shù)器從1重新開始計(jì)數(shù),并產(chǎn)生進(jìn)位信號(hào)使

50、月份加1,否則,在計(jì)數(shù)范圍內(nèi)一直加1。 </p><p>  2.2顯示控制電路的設(shè)計(jì)</p><p>  本設(shè)計(jì)顯示需要使用的是15個(gè)七段顯示數(shù)碼管。在計(jì)時(shí)結(jié)果顯示電路中,七段數(shù)碼管顯示部分是一個(gè)不容忽視的環(huán)節(jié),如若處理不得當(dāng),可能引起系統(tǒng)功率過(guò)大,產(chǎn)生散熱問(wèn)題,嚴(yán)重時(shí)甚至?xí)?dǎo)致系統(tǒng)的燒毀。為了解決好以上問(wèn)題,下面就對(duì)七段數(shù)碼管顯示電路做簡(jiǎn)要的分析和介紹。</p>&

51、lt;p>  通常點(diǎn)亮一個(gè)LED所需的電流是5~50 mA,通電的電流愈大,LED的亮度愈高,相對(duì)的也會(huì)使其壽命縮短。一般以10 mA的導(dǎo)通電流來(lái)估算它所必須串聯(lián)的阻值,其計(jì)算方式參考圖2-4所示。七段顯示器可分為共陽(yáng)極、共陰極型兩種,它們都可以等效成8個(gè)LED的連接電路,其中圖2-5就是共陰極型七段顯示器的等效電路和每節(jié)LED的定義位置圖。</p><p>  圖2-4 單個(gè)LED的串接電阻計(jì)算方式&l

52、t;/p><p>  圖2-5 共陰極型七段顯示器的LED位置定義和等效電路</p><p>  由于本設(shè)計(jì)的目標(biāo)是設(shè)計(jì)一個(gè)綜合的計(jì)時(shí)系統(tǒng),要求同時(shí)顯示年(在這里年份的前兩位固定為20)、月、日、時(shí)、分、秒及星期共15個(gè)數(shù)字,依照?qǐng)D2-4的計(jì)算方式,同時(shí)點(diǎn)亮一個(gè)七段顯示器的8節(jié)LED,結(jié)果將需要電流為10mA×8=80mA。若再進(jìn)一步同時(shí)點(diǎn)亮15個(gè)七段顯示器,這時(shí)所需的電流為80m

53、A×15=1200 mA=1.2A。這對(duì)于一般的電子電路來(lái)說(shuō),是一個(gè)不小的電源。不但CPLD&FPGA無(wú)法負(fù)荷這樣的電流驅(qū)動(dòng),而且這個(gè)功率也太大,散熱也是問(wèn)題,電路容易被燒毀。因此顯示電路部分不能直接實(shí)現(xiàn)各個(gè)計(jì)時(shí)結(jié)果同時(shí)顯示,只能另外通過(guò)一個(gè)掃描電路對(duì)計(jì)時(shí)輸出進(jìn)行逐個(gè)掃描,使七段數(shù)碼管以個(gè)位一組,逐個(gè)進(jìn)行顯示,只要每個(gè)掃描頻率不超過(guò)人的眼睛的視覺(jué)暫留頻率24Hz,就可以達(dá)到點(diǎn)亮兩個(gè)七段數(shù)碼管,卻能享有所有七段數(shù)碼管同時(shí)

54、顯示的視覺(jué)效果,而且顯示也不致閃爍抖動(dòng),從而間接實(shí)現(xiàn)計(jì)時(shí)結(jié)果同時(shí)顯示。</p><p>  根據(jù)以上設(shè)計(jì)思想,本系統(tǒng)的數(shù)據(jù)顯示電路可分為兩個(gè)子模塊:</p><p>  (1) 顯示控制電路XSKZQ:負(fù)責(zé)完成數(shù)據(jù)選擇掃描及數(shù)碼管位選擇信號(hào)的產(chǎn)生,數(shù)據(jù)掃描選擇輸出,對(duì)于選擇的數(shù)據(jù)進(jìn)行BCD碼轉(zhuǎn)換等功能;</p><p>  (2) 顯示譯碼電路:將用于顯示的BCD碼

55、數(shù)據(jù)進(jìn)行譯碼。</p><p>  XSKZQ的輸入、輸出端口如圖2-6所示。其中,輸入信號(hào)CLK_SCAN為用于產(chǎn)生數(shù)據(jù)選擇掃描等控制信號(hào)的時(shí)鐘信號(hào);輸入信號(hào)SEC、MIN、HOUR、DAY、MON、YEAR、WEEK分別來(lái)自計(jì)秒電路、計(jì)分電路、計(jì)時(shí)電路、計(jì)日電路、計(jì)月電路、計(jì)年電路、計(jì)星期電路等計(jì)時(shí)電路的計(jì)時(shí)結(jié)果輸出端;輸出信號(hào)BCD為被選擇進(jìn)行顯示的計(jì)秒、計(jì)分、計(jì)時(shí)、計(jì)日、計(jì)月、計(jì)年、計(jì)星期電路等計(jì)時(shí)電路的

56、計(jì)時(shí)結(jié)果的8位BCD碼,輸出端SELOUT經(jīng)外部的2-8譯碼電路譯碼后用于選擇對(duì)應(yīng)計(jì)時(shí)結(jié)果顯示數(shù)碼管的公共端COM。圖2-7為15個(gè)共陰極型七段數(shù)碼管驅(qū)動(dòng)接線圖。</p><p>  圖2-6 XSKZQ的輸入、輸出端口圖 </p><p>  圖2-7 15個(gè)共陰極型七段數(shù)碼管驅(qū)動(dòng)接線圖</p><p>  顯示控制電路XSKZQ的VHDL源程序:</p

57、><p>  IF CLK_SCAN'EVENT AND CLK_SCAN='1' THEN </p><p>  IF CNT="111" THEN </p><p>  CNT<="000";</p><p><b>  ELSE</b><

58、/p><p>  CNT<=CNT+'1';</p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  SELOUT<=CNT;</p

59、><p>  PROCESS(CNT)</p><p><b>  BEGIN</b></p><p>  CASE CNT IS</p><p>  WHEN "000" => TEMP<=CONV_INTEGER(SEC); </p><p>  WHEN &qu

60、ot;001" => TEMP<=CONV_INTEGER(MIN);</p><p>  WHEN "010" => TEMP<=CONV_INTEGER(HOUR);</p><p>  WHEN "011" => TEMP<=CONV_INTEGER(DAY);</p><

61、p>  WHEN "100" => TEMP<=CONV_INTEGER(MON);</p><p>  WHEN "101" => TEMP<=CONV_INTEGER( YEAR);</p><p>  WHEN "110" => TEMP<=2;</p><

62、p>  WHEN "111" => TEMP<=CONV_INTEGER(WEEK);</p><p>  WHEN OTHERS=>NULL;</p><p><b>  END CASE;</b></p><p>  CASE TEMP IS</p><p>  WHEN

63、 0 =>BCD<="00000000" ;</p><p>  WHEN 1 =>BCD<="00000001" ;</p><p>  WHEN 2 =>BCD<="00000010" ;</p><p>  WHEN 3 =>BCD<="

64、;00000011" ;</p><p><b>  ……</b></p><p>  WHEN 97 =>BCD<="10010111" ;</p><p>  WHEN 98 =>BCD<="10011000" ;</p><p>  WHEN

65、 99 =>BCD<="10011001" ;</p><p>  WHEN OTHERS=>BCD<="00000000";</p><p><b>  END CASE;</b></p><p>  分析:先對(duì)各個(gè)輸出信號(hào)進(jìn)行掃描,根據(jù)輸出信號(hào)選擇數(shù)碼管位,并通過(guò)譯碼電路將B

66、CD數(shù)據(jù)譯碼,譯碼后可以選擇對(duì)應(yīng)計(jì)時(shí)結(jié)果顯示數(shù)碼管的公共端COM。</p><p>  2.3調(diào)整控制電路TZKZQ的設(shè)計(jì)</p><p>  對(duì)于系統(tǒng)中的時(shí)間調(diào)整電路,擬通過(guò)模式和調(diào)整兩個(gè)外部按鍵完成。模式按鍵負(fù)責(zé)切換正常時(shí)間計(jì)數(shù)模式和時(shí)間調(diào)整模式,調(diào)整模式切換順序如圖2-8所示。調(diào)整鍵負(fù)責(zé)在時(shí)間調(diào)整模式之下,對(duì)當(dāng)前模式的計(jì)時(shí)結(jié)果進(jìn)行調(diào)整。</p><p>  圖

67、2-8 調(diào)整模式切換順序</p><p>  在模式選擇的過(guò)程中,被選擇到的調(diào)整模式所對(duì)應(yīng)的發(fā)光二極管會(huì)被點(diǎn)亮。例如,按動(dòng)模式鍵,選定“2010年5月7日09:09:09 星期5”的分鐘數(shù)“09”,對(duì)應(yīng)的調(diào)分模式發(fā)光二極管將會(huì)被點(diǎn)亮,剩下的6個(gè)調(diào)整模式發(fā)光二極管不被點(diǎn)亮。當(dāng)處于正常模式時(shí),7個(gè)發(fā)光二極管均不被點(diǎn)亮。被調(diào)整的計(jì)時(shí)結(jié)果之間相互獨(dú)立。調(diào)整過(guò)程中,只有被選擇到的計(jì)數(shù)結(jié)果才會(huì)被接收調(diào)整,例如上述的“09”

68、分鐘數(shù)部分,它可能會(huì)有的調(diào)整范圍為0~59,其余的數(shù)字將固定顯示不動(dòng)。</p><p>  TZKZQ模塊是負(fù)責(zé)各個(gè)模塊之間的相互切換以及對(duì)被選中的模式進(jìn)行時(shí)間調(diào)整的。圖2-9是其輸入、輸出端口圖。其中輸入信號(hào)KEY[1..0]為鍵盤信號(hào),當(dāng)KEY=01時(shí),表示按下了設(shè)置鍵,系統(tǒng)切換到下一個(gè)狀態(tài),當(dāng)KEY=10時(shí)表示按下了調(diào)整鍵,系統(tǒng)進(jìn)行自加;輸入信號(hào)CLK_KEY為按鍵掃描時(shí)鐘信號(hào);輸入信號(hào)YEAR_CUR、M

69、ON_CUR、DAY_CUR、HOUR_CUR、MIN_CUR、SEC_CUR、WEEK_CUR、MAX_DAYS均為來(lái)自各自計(jì)時(shí)電路輸出的當(dāng)前計(jì)時(shí)結(jié)果的反饋值;輸入信號(hào)YEAR_EN、MON_EN、DAY_EN、HOUR_EN、MIN_EN、SEC_EN、WEEK_EN、均為對(duì)應(yīng)的計(jì)時(shí)電路的一部并行置數(shù)使能信號(hào);輸出信號(hào)YEAR、MON、DAY、HOUR、MIN、SEC、WEEK則為調(diào)整后的對(duì)應(yīng)時(shí)間需預(yù)置的數(shù)。該模塊的VHDL程序主要

70、通過(guò)一個(gè)狀態(tài)機(jī)來(lái)實(shí)現(xiàn)[12]。</p><p>  圖2-9 TZKZQ的輸入、輸出端口圖</p><p>  調(diào)整控制電路TZKZQ的VHDL源程序:</p><p>  IF CLK_KEY'EVENT AND CLK_KEY='1' THEN</p><p>  IF KEY="01" TH

71、EN --如果按下設(shè)置鍵,切換到下一個(gè)狀態(tài)</p><p>  SEC_EN<='1';MIN_EN<='1';HOUR_EN<='1';</p><p>  DAY_EN<='1';MON_EN<='1';YEAR_EN<='1';</p>

72、<p>  WEEK_EN<='1';</p><p>  CASE MODE IS </p><p>  WHEN NORMAL => MODE<=SEC_SET;SEC<=SEC_CUR;SEC_EN<='0';</p><p>  --切換到秒設(shè)置模式,讀入當(dāng)前秒,秒異步并行置位使能有

73、效</p><p>  WHEN SEC_SET => MODE<=MIN_SET;MIN<=MIN_CUR;SEC_EN<='1';MIN_EN<='0'; </p><p>  --切換到分設(shè)置模式,讀入當(dāng)前分,分異步并行置位使能有效, 同時(shí)秒異步并行置位使能復(fù)位</p><p>  WHEN MIN

74、_SET => MODE<=HOUR_SET;HOUR<=HOUR_CUR;MIN_EN<='1';HOUR_EN<='0';</p><p>  WHEN HOUR_SET=> MODE<=DAY_SET;DAY<=DAY_CUR;HOUR_EN<='1';DAY_EN<='0';<

75、/p><p>  WHEN DAY_SET => MODE<=MON_SET;MON<=MON_CUR;DAY_EN<='1';MON_EN<='0';</p><p>  WHEN MON_SET => MODE<=YEAR_SET;YEAR<=YEAR_CUR; MON_EN<='1';&

76、lt;/p><p>  YEAR_EN<='0'; </p><p>  WHEN YEAR_SET => MODE<=WEEK_SET;WEEK<=WEEK_CUR;YEAR_EN<='1';WEEK_EN<='0';</p><p>  WHEN WEEK_SET => MO

77、DE<=NORMAL;</p><p>  END CASE; </p><p>  ELSIF KEY="10" THEN --如果按下調(diào)整鍵,則自加 </p><p>  CASE MODE IS</p><p>  WHEN SEC_SET =>

78、; SEC_EN<='0'; --異步并行置位使能有效</p><p>  IF SEC="111011" THEN SEC<="000000";如果秒計(jì)數(shù)到59,返回到0重新計(jì)數(shù)</p><p>  ELSE SEC<=SEC+1; --否則繼

79、續(xù)計(jì)數(shù)</p><p><b>  END IF;</b></p><p>  WHEN MIN_SET => MIN_EN<='0';</p><p>  IF MIN="111011" THEN MIN<="000000";</p><p> 

80、 ELSE MIN<=MIN+1; </p><p><b>  END IF;</b></p><p>  WHEN HOUR_SET=> HOUR_EN<='0';</p><p>  IF HOUR="11000" THEN HOUR<="00000";&l

81、t;/p><p>  ELSE HOUR<=HOUR+1;</p><p><b>  END IF;</b></p><p>  WHEN DAY_SET => DAY_EN<='0';</p><p>  IF DAY<=MAX_DAYS THEN DAY<="00

82、001";</p><p>  ELSE DAY<=DAY+1;</p><p><b>  END IF;</b></p><p>  WHEN MON_SET => MON_EN<='0';</p><p>  IF MON="1100" THEN MO

83、N<="0001";</p><p>  ELSE MON<=MON+1;</p><p><b>  END IF;</b></p><p>  WHEN YEAR_SET=> YEAR_EN<='0';</p><p>  IF YEAR="110

84、0011" THEN YEAR<="0000000";</p><p>  ELSE YEAR<=YEAR+1;</p><p><b>  END IF;</b></p><p>  WHEN WEEK_SET=> WEEK_EN<='0';</p><

85、p>  IF WEEK="111" THEN WEEK<="001";</p><p>  ELSE WEEK<=WEEK+1;</p><p><b>  END IF;</b></p><p>  WHEN OTHERS=>NULL;</p><p>&

86、lt;b>  END CASE;</b></p><p><b>  END IF;</b></p><p><b>  END IF;</b></p><p>  END PROCESS;</p><p>  END ARCHITECTURE ART;</p>&l

87、t;p><b>  (三) 系統(tǒng)仿真</b></p><p>  3.1CNT60.VHD的仿真</p><p>  從圖2-10以看出,CNT60.VHD實(shí)現(xiàn)了從0到59的循環(huán)計(jì)數(shù),每實(shí)現(xiàn)一次59到0的計(jì)數(shù)動(dòng)作,計(jì)數(shù)模塊輸出一個(gè)進(jìn)位信號(hào)。當(dāng)LD端有低電平輸入時(shí),說(shuō)明置數(shù)信號(hào)(LD)有效,模塊將預(yù)置數(shù)(DATA)56送入計(jì)數(shù)結(jié)果(NUM)中去,計(jì)數(shù)模塊從56開始

88、重新計(jì)數(shù)。</p><p>  圖2-10 CNT60.VHD模塊仿真圖</p><p>  3.2 CNT30.VHD的仿真</p><p>  從圖2-11可以看出,該模塊首先要讀取當(dāng)前年月(NIAN和YUE),再對(duì)該月的最大天數(shù)(MAX_DAYS)進(jìn)行判斷并將結(jié)果向外輸出。在正常計(jì)數(shù)過(guò)程中,模塊實(shí)現(xiàn)了從0到最大天數(shù)(MAX_DAYS)的循環(huán)計(jì)數(shù),每實(shí)現(xiàn)一次最大

89、天數(shù)(MAX_DAYS)到0的計(jì)數(shù)動(dòng)作,計(jì)數(shù)模塊輸出一個(gè)進(jìn)位信號(hào)。當(dāng)LD端有低電平輸入時(shí),說(shuō)明置數(shù)信號(hào)(LD)有效,模塊將預(yù)置數(shù)(DATA)24送入計(jì)數(shù)結(jié)果(NUM)中去,計(jì)數(shù)模塊從24開始重新計(jì)數(shù)。</p><p>  圖2-11 CNT30模塊仿真圖</p><p>  3.3 TZKZQ.VHD的仿真</p><p>  從圖2-12可以看出,調(diào)整鍵被按下了

90、8次(鍵盤產(chǎn)生“01”信號(hào)即為調(diào)整鍵按下一次),調(diào)整模式依次經(jīng)過(guò)了正常、調(diào)秒、調(diào)分、調(diào)時(shí)、調(diào)日、調(diào)月、調(diào)年、調(diào)星期再回到正常這8種模式的循環(huán),即MODE依次從0到7,再?gòu)?回到0的循環(huán)。在按鍵過(guò)程中,每按下一次按鈕,相應(yīng)地被調(diào)整模式的異步并行置位使能置“0”,同時(shí)通過(guò)一個(gè)非門點(diǎn)亮該調(diào)整模式所對(duì)應(yīng)的發(fā)光二極管,作為該調(diào)整模式的指示信號(hào)。 </p><p>  圖2-12 TZKZQ.VHD仿真圖(一)</p

91、><p>  從圖2-13可以看出,在按動(dòng)了兩次模式鍵(01)后,調(diào)整模式切換到了調(diào)分模式,然后又按動(dòng)了兩次調(diào)整鍵(10),實(shí)現(xiàn)了在調(diào)分模式下對(duì)當(dāng)前分的值進(jìn)行調(diào)整(從34調(diào)到36)。 </p><p>  圖2-13 TZKZQ.VHD仿真圖(二)</p><p>  3.4 XSKZQ.VHD的仿真</p><p>  從圖2-14可以看出,

92、當(dāng)SELOUT分別等于0,1,2,3,4,5,6,7時(shí),分別選擇對(duì)應(yīng)的輸入數(shù)據(jù)輸出,達(dá)到了設(shè)計(jì)要求。 </p><p>  圖2-14 XSKZQ.VHD的仿真圖</p><p><b> ?。ㄋ模┰O(shè)計(jì)技巧分析</b></p><p>  (1) 在顯示控制電路XSKZQ的設(shè)計(jì)中,利用動(dòng)態(tài)掃描顯示的原理,既簡(jiǎn)化了顯示譯碼驅(qū)動(dòng)電路的設(shè)計(jì),又節(jié)約

93、了硬件的I/O口,同時(shí)還減小了系統(tǒng)的驅(qū)動(dòng)電流及功耗等,在實(shí)際使用中非常有價(jià)值。</p><p>  (2) 在調(diào)整控制電路TZKZQ的設(shè)計(jì)中,通過(guò)讀入系統(tǒng)當(dāng)前工作的各種時(shí)間信息進(jìn)行自加調(diào)整,簡(jiǎn)化了預(yù)置值的設(shè)計(jì),利用狀態(tài)機(jī)非常簡(jiǎn)潔地實(shí)現(xiàn)了8種調(diào)整的循環(huán)變化。</p><p><b>  心得體會(huì):</b></p><p>  通過(guò)這次對(duì)搶答器的和

94、綜合計(jì)時(shí)系統(tǒng)設(shè)計(jì)設(shè)計(jì)和實(shí)踐,學(xué)到了很多的東西,不僅鞏固了以前所學(xué)的知識(shí),而且學(xué)到了書本上沒(méi)有的東西,在調(diào)試中每修改一個(gè)小的錯(cuò)誤,自己心中的成就感徒增。在設(shè)計(jì)的過(guò)程中遇到問(wèn)題,可以說(shuō)得是困難重重,中途遇到過(guò)各種各樣的問(wèn)題,但通過(guò)我的堅(jiān)持不懈,通過(guò)查閱相關(guān)資料和同學(xué)交流以及請(qǐng)教老師,最終把一個(gè)個(gè)問(wèn)題都解決了,因此我感到很欣慰,在解決問(wèn)題的過(guò)程中我學(xué)到了很多知識(shí),這為我以后能獨(dú)立解決問(wèn)題打下了堅(jiān)實(shí)的基礎(chǔ)。同時(shí)在設(shè)計(jì)的過(guò)程中發(fā)現(xiàn)了自己的不足之處

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論