版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、中北大學(xué)課程設(shè)計(jì)說明書學(xué)生姓名:金博楠學(xué) 號(hào):0906024139學(xué) 院 :電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院專 業(yè) :微電子題 目 :利用鍵盤控制數(shù)碼管進(jìn)行十進(jìn)制數(shù)字顯示指導(dǎo)教師: 崔永俊 職稱 : 副教授2012 年 6 月 22 日目錄1、課程設(shè)計(jì)的目的 12、課程設(shè)計(jì)內(nèi)容和要求 12.1 、設(shè)計(jì)內(nèi)容 12.2 、設(shè)計(jì)要求 13、設(shè)計(jì)方案及實(shí)現(xiàn)情況 13.1 、設(shè)計(jì)思路 13.2 、工作原理及框圖 13.3 、各模塊功能描述 33.4 、仿真結(jié)果 93.5 、試驗(yàn)箱驗(yàn)證情況 104、課程設(shè)計(jì)總結(jié) 115、參考文獻(xiàn) 121、課程設(shè)計(jì)的目的1)、學(xué)習(xí)操作數(shù)字電路設(shè)計(jì)實(shí)驗(yàn)開發(fā)系統(tǒng),掌握數(shù)碼管顯示模塊的工
2、作原理及應(yīng)用。2)、掌握組合邏輯電路、時(shí)序邏輯電路的設(shè)計(jì)方法。3)、學(xué)習(xí)掌握可編程器件設(shè)計(jì)的全過程。2、課程設(shè)計(jì)內(nèi)容和要求2.1 、設(shè)計(jì)內(nèi)容1)、學(xué)習(xí)掌握鍵盤控制模塊、數(shù)碼管顯示模塊的工作原理及應(yīng)用;2)、熟練掌握 VHDL編程語言,編寫鍵盤控制模塊的控制邏輯。2.2 、設(shè)計(jì)要求1)、仿真所編寫的程序,模擬驗(yàn)證所編寫的模塊功能;2)、下載程序到芯片中,硬件驗(yàn)證所設(shè)置的功能,能夠?qū)崿F(xiàn)十進(jìn)制數(shù)的顯示;3)、整理設(shè)計(jì)內(nèi)容,編寫設(shè)計(jì)說明書。3、設(shè)計(jì)方案及實(shí)現(xiàn)情況3.1 、設(shè)計(jì)思路1)、鍵盤不斷掃描,有按鍵按下則輸出相應(yīng)信號(hào),并且發(fā)出使能信號(hào)給處理模塊。2)、處理模塊對(duì)收到的信號(hào)進(jìn)行判斷,決定執(zhí)行什么操
3、作,對(duì)數(shù)據(jù)進(jìn)行運(yùn)算。3)、對(duì)于數(shù)字鍵需要移位顯示,功能鍵要考慮優(yōu)先級(jí)判斷,進(jìn)行倒計(jì)時(shí)操作時(shí)要能對(duì)時(shí) 鐘信號(hào)分頻自減。4)、專門的程序段用來不斷將當(dāng)前數(shù)據(jù)各位求出,譯碼成顯示內(nèi)容輸給數(shù)據(jù)選擇模塊。5)、數(shù)據(jù)選擇模塊根據(jù)掃描電路選擇信號(hào)將各位數(shù)字顯示出來。3.2 、工作原理及框圖1、鍵盤原理鍵盤電路網(wǎng)絡(luò)很像一臺(tái)微縮的計(jì)算機(jī),它擁有自己的處理器和在該處理器之間傳輸 數(shù)據(jù)的電路,這個(gè)電路的很大一部分組成了鍵矩陣。鍵矩陣是位于鍵下方的一種電路網(wǎng) 格。在所有的鍵盤(中,每個(gè)電路在每個(gè)按鍵所處的位置點(diǎn)下均處于斷開狀態(tài)。當(dāng)您按 下某個(gè)鍵時(shí),此按鍵將按下了開關(guān),從而閉合電路,使得少量電流可以通過。開關(guān)的機(jī) 械作
4、用會(huì)導(dǎo)致某種振動(dòng)(稱作回彈) ,處理器可以過濾掉這種振動(dòng)。如果您按下某鍵并保持住,則處理器認(rèn)為您是在反復(fù)按下該鍵。試驗(yàn)箱上的鍵盤可以看做是 8*4 的矩陣鍵盤(雖然外部不是),8行由 38 譯碼器選擇,所以有外部 sel0-2 三根線控制掃描。2、鍵盤中按鍵的判斷 對(duì)于鍵盤中有無鍵按下的判斷是很重要的,具體判斷如下:將全部行線置低電平, 然后檢測(cè)列線的狀態(tài)。只要有一列的電平為低,則表示鍵盤中有鍵被按下,而且閉合的 鍵位于低電平線與行線相交叉的按鍵之中。若所有列線均為高電平,則鍵盤中無鍵按下。 在確認(rèn)有鍵按下后,即可進(jìn)入確定具體閉合鍵的過程。其方法是:依次將行線置為低電 平,即在置某根行線為低電
5、平時(shí),其它線為高電平。在確定某根行線位置為低電平后, 再逐行檢測(cè)各列線的電平狀態(tài)。若某列為低,則該列線與低電平的行線交叉處的按鍵就 是閉合的按鍵。鍵盤掃描模塊在時(shí)鐘下不斷將行置零,掃描列的狀態(tài),判斷按鍵。Sel2-0Kin3-0對(duì)應(yīng)按鍵00011100001111010101110201111103110111041111110500011016001110173、鍵盤按鍵對(duì)應(yīng)的編碼Sel2-0Kin3-0對(duì)應(yīng)按鍵10011018101110191101011NEXT0001011LAST1111011ENTER1011110ESC1101101A(+)1111101B(-)4、數(shù)據(jù)處理 鍵盤
6、掃描模塊檢測(cè)到按鍵按下后,給下級(jí)發(fā)出使能脈沖,同時(shí)將按鍵信息給數(shù)據(jù)處理模 塊。根據(jù)按鍵不同進(jìn)行不同處理。數(shù)字鍵按下時(shí),要進(jìn)行移位操作;加減鍵按下時(shí)要進(jìn)行寄存操作;自加減鍵按下是要進(jìn) 行加減 1 操作;清零鍵按下時(shí)要進(jìn)行全部清零;確認(rèn)鍵按下時(shí)要進(jìn)行計(jì)算操作或者倒計(jì)時(shí)操 作。這就需要設(shè)立一些標(biāo)志位來判斷。計(jì)算采用一位 BCD形式計(jì)算,進(jìn)借位標(biāo)志位輔助,這樣比用實(shí)數(shù)計(jì)算后轉(zhuǎn) BCD形式的電路簡(jiǎn)單高效。處于倒計(jì)時(shí)模式時(shí),引入外部時(shí)鐘,內(nèi)部分頻后自減一操作。5、多路選擇顯示 四個(gè)需要顯示的數(shù)碼管的值始終輸入,通過片選決定某一時(shí)刻那個(gè)值輸出。選擇信號(hào)即 為掃描輸出信號(hào),因?yàn)閿?shù)碼管和鍵盤是共用一個(gè)掃描端。所
7、以當(dāng)掃描信號(hào)選中相應(yīng)數(shù)碼管時(shí) 讓對(duì)應(yīng)值輸出即可。6、整體電路結(jié)構(gòu)框圖圖 1. 原理圖框架3.3 、各模塊功能描述掃描模塊:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_ARITH.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;- 輸入時(shí)鐘- 有鍵按下時(shí)輸出使能ENTITY scan ISPORT(clk:IN STD_LOGIC;en:OUT STD_LOGIC;data:OUT STD_LOGIC_VECTOR(3 DOWNTO 0); slk:OUT STD_LOGIC_VECTOR(2 D
8、OWNTO 0); kin:IN STD_LOGIC_VECTOR(3 DOWNTO 0); END scan;ARCHITECTURE behave OF scan IS BEGINPROCESS(clk)VARIABLE pslk:STD_LOGIC_VECTOR(2 DOWNTO 0);VARIABLE p:STD_LOGIC_VECTOR(6 DOWNTO 0);VARIABLE i:INTEGER RANGE 0 TO 7;VARIABLE rel:INTEGER RANGE 0 TO 300;- 輸出按鍵信息- 數(shù)碼管選擇端口- 鍵盤響應(yīng)輸入端口- 掃描變量- 按鍵信息變量- 掃描
9、循環(huán)變量- 重復(fù)按鍵延時(shí)變量VARIABLE int:STD_LOGIC;BEGINIF(clkEVENT AND clk=1)THEN IF(rel=300)THEN- 按鍵中斷變量-500HZ 的時(shí)鐘信號(hào)上升沿觸發(fā)- 兩次按鍵產(chǎn)生有效的最短時(shí)間,延時(shí)避免重復(fù)觸發(fā)rel:=rel;ELSErel:=rel+1;END IF;IF(i=7)THEN - 掃描信號(hào)為 000111,8 次循環(huán)掃描 slkdatadatadatadatadatadatadatadatadatadatadatadatadatadatadatadataNULL;END CASE;en=1;END IF;ELSE- 消抖
10、后再次確認(rèn)有鍵按下- 結(jié)合 slk 和 kin 的信息判斷哪個(gè)鍵按下- 判斷按鍵信息-0-1-2-3-4-5-6-7-8-9-10-NEXT-11-LAST-12-ENTER-13-ESC-14-A(+)-15-B(-)- 產(chǎn)生脈沖信號(hào)END LOOP;enbit0bit0bit0bit0bit0bit0bit0bit0bit0bit0bit09)THENc2:=1; zz:=zz-10;ELSEc2:=0;END IF;z:=zz;END PROCEDURE add;PROCEDURE sub(a:IN INTEGER;b:IN INTEGER; c1:IN INTEGER RANGE 0
11、TO 2; z:OUT INTEGER;c2:OUT INTEGER RANGE 0 TO 2)IS VARIABLE zz:INTEGER;BEGINzz:=a-b-c1;IF(zzn:=0;IF(a=1)THENa:=0;add(q1,p1,0,q1,c);add(q2,p2,c,q2,c);add(q3,p3,c,q3,c);add(q4,p4,c,q4,c);ELSIF (b=1)THEN b:=0; sub(p1,q1,0,q1,c); sub(p2,q2,c,q2,c); sub(p3,q3,c,q3,c); sub(p4,q4,c,q4,c);ELSIF (r=0)THENr:=
12、1;ELSE- 時(shí)鐘信號(hào)上升沿觸發(fā)檢查端口狀態(tài)- 使能信號(hào)有效,且重復(fù)屏蔽信號(hào)關(guān)閉時(shí)響應(yīng)按鍵信息- 按鍵為“ enter ”鍵,執(zhí)行求結(jié)果,倒計(jì)時(shí)啟動(dòng)暫停功能- 解除加減法待操作狀態(tài)- 有加法則進(jìn)行加法運(yùn)算- 加法標(biāo)志位清零- 被加數(shù)與加數(shù)求和- 有減法則進(jìn)行減法運(yùn)算- 減法標(biāo)志位清零- 被減數(shù)與減數(shù)作差- 沒有加減法操作又不在倒計(jì)時(shí)狀態(tài)則啟動(dòng)倒計(jì)時(shí)- 否則為在倒計(jì)時(shí)狀態(tài), “ enter ”鍵功能為暫停r:=0; END IF; WHEN 1110 = IF (r=0)THEN a:=1;b:=0;n:=1;x_to_y(q1,q2,q3,q4,p1,p2,p3,p4); x_to_y(0,
13、0,0,0,q1,q2,q3,q4);END IF;WHEN 1111 =IF (r=0)THENa:=0;b:=1;n:=1;x_to_y(q1,q2,q3,q4,p1,p2,p3,p4); x_to_y(0,0,0,0,q1,q2,q3,q4);END IF;WHEN 1010 =IF (r=0)THENIF (n=0)THEN add(q1,1,0,q1,c); add(q2,0,c,q2,c); add(q3,0,c,q3,c); add(q4,0,c,q4,c);END IF;END IF;- 按鍵為“ A(+)”鍵,執(zhí)行加法功能- 不在倒計(jì)時(shí)狀態(tài),則(否則無效)- 加法標(biāo)注位置 1
14、 - 減法標(biāo)志位清零 - 待操作位置 1 - 被加數(shù)暫存- 顯示清零- 按鍵為“ B(- )”鍵,執(zhí)行減法功能- 不在倒計(jì)時(shí)狀態(tài),則(否則無效)- 加法標(biāo)志位清零 - 減法標(biāo)志位置 1 - 待操作位置 1 - 被減數(shù)暫存- 顯示清零- 按鍵為“ next ”鍵,執(zhí)行自加 1 功能- 不在倒計(jì)時(shí)狀態(tài),則(否則無效) - 不在加減號(hào)剛輸入之后(否則無效)- 加 1WHEN 1011 =IF (r=0)THENIF (n=0)THEN sub(q1,1,0,q1,c); sub(q2,0,c,q2,c); sub(q3,0,c,q3,c); sub(q4,0,c,q4,c);END IF;END I
15、F;WHEN 1101 =IF (r=0)THENx_to_y(0,0,0,0,p1,p2,p3,p4);x_to_y(0,0,0,0,q1,q2,q3,q4);- 按鍵為“ last ”鍵,執(zhí)行自減 1 功能- 不在倒計(jì)時(shí)狀態(tài),則(否則無效)- 不在加減號(hào)剛輸入之后(否則無效)- 減 1- 按鍵為“ esc ”鍵,執(zhí)行清零功能 - 不在倒計(jì)時(shí)狀態(tài),則(否則無效) - 寄存器,標(biāo)志位清零a:=0;b:=0;n:=0;END IF;WHEN OTHERS =IF (r=0)THENn:=0; q4:=q3; q3:=q2; q2:=q1; q1:=CONV_INTEGER(date2);END
16、IF;END CASE;e:=1;ELSIF (en2=0)THENe:=0;- 按鍵為“ 09”,執(zhí)行多位數(shù)據(jù)輸入,移位顯示- 不在倒計(jì)時(shí)狀態(tài),則(否則無效) - 解除加減法待操作狀態(tài)- 后一個(gè)數(shù)碼管顯示內(nèi)容給前一個(gè)- 第一位讀取輸入的數(shù)字- 重復(fù)屏蔽信號(hào)打開,防止重復(fù)觸發(fā)- 使能脈沖過去后重復(fù)屏蔽信號(hào)關(guān)閉END IF;IF(r=1)THENIF(countnumbernumbernumbernumbernumber=00000000;END CASE;END PROCESS;END behave;- 掃描信號(hào),用作選擇- 各數(shù)碼管要顯示的內(nèi)容- 片選的數(shù)碼管顯示的內(nèi)容- 片選信號(hào)對(duì)應(yīng)的多路
17、選擇器的選通規(guī)則- 高四位數(shù)碼管未用,選到是統(tǒng)一輸出全暗圖 2. 掃描電路模塊仿真3.4 、仿真結(jié)果圖 3. 數(shù)據(jù)處理模塊仿真圖 4. 多路開關(guān)模塊仿真3.5 、試驗(yàn)箱驗(yàn)證情況將編寫好的程序編譯運(yùn)行并檢查無誤后下載到裝有一款EP1K30TC144 3N 芯片的實(shí)驗(yàn)箱,分配好各個(gè)管腳后再次驗(yàn)證次所用程序下載的是否完整后根據(jù)課程設(shè)計(jì)要求按某一個(gè)在 09 的數(shù)字鍵能正確顯示所按數(shù)字,各功能鍵是否起作用,從而實(shí)現(xiàn)利用鍵盤控制數(shù)碼管 進(jìn)行十進(jìn)制數(shù)字的顯示。圖 5. 輸入被加數(shù)圖 6. 按下“ A”表示減圖 8. 按下“ ENTER”表示等于圖 7. 輸入加數(shù)- 10 -圖 9. 按下“ NEXT”表示下
18、一個(gè)數(shù)圖 10. 按下“ LAST”表示上一個(gè)數(shù)圖 11. 再按下“ ENTER”表示倒計(jì)時(shí),暫停也是該鍵圖 12. 按下“ ESC”表示清零4、課程設(shè)計(jì)總結(jié)此次試驗(yàn)用一周多的時(shí)間用 FPGA設(shè)計(jì)實(shí)現(xiàn)了鍵盤控制數(shù)碼管顯示十進(jìn)制數(shù)的功能。 題目 很簡(jiǎn)單,可自由發(fā)揮。所以我在十進(jìn)制數(shù)輸入和顯示的基礎(chǔ)上給自己增加了加減法運(yùn)算和倒 計(jì)時(shí)的要求。本次課設(shè)運(yùn)用的是 FPGA芯片,編程語言為 VHDL語言,對(duì)于沒有真正學(xué)過 FPGA,VHDL又 已有些生疏的我們來說,開始階段確實(shí)遇到不少麻煩。比如,數(shù)碼管的掃描信號(hào)和鍵盤的掃 描信號(hào)共用,如何讓鍵盤實(shí)現(xiàn)掃描又能在對(duì)應(yīng)位顯示。開始運(yùn)用中斷程序分時(shí)工作,后來發(fā) 現(xiàn)可以同時(shí)存在。開始寫程序從頭寫到尾,各種功能交叉在一起,后來發(fā)現(xiàn)經(jīng)過模塊化分, 各模塊功能獨(dú)立,便于編寫,檢查和拓展。這種模塊化的設(shè)計(jì)思路被證明確實(shí)是種好習(xí)慣。程序語言的設(shè)計(jì)中經(jīng)常出現(xiàn)信號(hào)不能按所希望的方式變化, 而且 VHDL語言對(duì)變量的屬性 要求很高,因此在一種程序表達(dá)不能夠?qū)崿F(xiàn)的情況下可以通過另一種表達(dá)方式或者邏輯形式- 11 - 去實(shí)現(xiàn),從自己的經(jīng)歷我體會(huì)到同樣的效果確實(shí)可以有不同的程序設(shè)計(jì)思路一個(gè)禮拜的時(shí)間,我經(jīng)歷過最初的課本復(fù)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度礦山轉(zhuǎn)讓與礦山安全生產(chǎn)責(zé)任合同
- 2025年度知識(shí)產(chǎn)權(quán)侵權(quán)賠償合同補(bǔ)充協(xié)議
- 二零二五年度海參干貨質(zhì)量檢測(cè)與認(rèn)證合同
- 2025年度大數(shù)據(jù)中心建設(shè)農(nóng)民工勞務(wù)合同模板4篇
- 2025年度軟件著作權(quán)聲明與版權(quán)許可實(shí)施合同
- 二零二五年度員工離職終止勞動(dòng)合同解除聲明范本
- 二零二五年度終止民宿租賃合同解除通知
- 2025年度個(gè)人融資租賃保險(xiǎn)合同范本4篇
- 2025年攪拌車租賃與綠色建筑標(biāo)準(zhǔn)合同
- 二零二五版房地產(chǎn)項(xiàng)目風(fēng)險(xiǎn)評(píng)估與咨詢合同4篇
- 成長(zhǎng)小說智慧樹知到期末考試答案2024年
- 紅色革命故事《王二小的故事》
- 海洋工程用高性能建筑鋼材的研發(fā)
- 蘇教版2022-2023學(xué)年三年級(jí)數(shù)學(xué)下冊(cè)開學(xué)摸底考試卷(五)含答案與解析
- 英語48個(gè)國(guó)際音標(biāo)課件(單詞帶聲、附有聲國(guó)際音標(biāo)圖)
- GB/T 6892-2023一般工業(yè)用鋁及鋁合金擠壓型材
- 冷庫安全管理制度
- 2023同等學(xué)力申碩統(tǒng)考英語考試真題
- 家具安裝工培訓(xùn)教案優(yōu)質(zhì)資料
- 在雙減政策下小學(xué)音樂社團(tuán)活動(dòng)有效開展及策略 論文
- envi二次開發(fā)素材包-idl培訓(xùn)
評(píng)論
0/150
提交評(píng)論