版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、目錄課程設(shè)計(jì)的目的與任務(wù) 課程設(shè)計(jì)題目1、指定題目:2、 自選題目: 課程設(shè)計(jì)的內(nèi)容與要求1、設(shè)計(jì)內(nèi)容2、設(shè)計(jì)要求.四、實(shí)驗(yàn)儀器設(shè)備五、設(shè)計(jì)方案1、PS2 解碼.2、設(shè)計(jì)思路3、模塊設(shè)計(jì)4、各模塊分析(1)PS2時(shí)鐘檢測(cè)模塊(2)PS2解碼模塊(3)PS2組合模塊.(4)控制LED模塊.(5)PS2總的組合模塊八、綜合與仿真1、 綜合.2、仿真(1) 電平檢測(cè)模塊仿真(2) LED燈控制模塊仿真 (3) PS2 module總模塊仿真七、硬件下載八、心得體會(huì)九、參考文獻(xiàn)、課程設(shè)計(jì)的目的與任務(wù)(1) 熟練掌握EDA工具軟件Quartusll的使用;(2) 熟練用VHDL硬件描述語(yǔ)言描述數(shù)字電路;
2、(3) 學(xué)會(huì)使用VHDL進(jìn)行大規(guī)模集成電路設(shè)計(jì);4)學(xué)會(huì)用 CPLDFPGA 使用系統(tǒng)硬件驗(yàn)證電路設(shè)計(jì)的正確性;5)初步掌握 EDA 技術(shù)并具備一定的可編程邏輯芯片的開發(fā)能力;二、課程設(shè)計(jì)題目1、指定題目:0 :多功能計(jì)數(shù)器; 1:數(shù)字秒表;2 :簡(jiǎn)易數(shù)字鐘; 3 :簡(jiǎn)易頻率計(jì);4 :彩燈控制器; 5 :交通燈控制器;6 :四路智力競(jìng)賽搶答器;9 :數(shù)字密碼鎖;我的的學(xué)號(hào)尾數(shù)是 2,所以我要做的題目是簡(jiǎn)易數(shù)字鐘。由于我之前已經(jīng)學(xué)過 Verilog7 :簡(jiǎn)易微波爐控制器;8 :表決器;HDL 和 VHDL ,所以簡(jiǎn)易數(shù)字鐘相對(duì)于我比較簡(jiǎn)單,我完成了簡(jiǎn)易數(shù)字鐘并驗(yàn)收后,再選 擇了另一個(gè)自選題目來完
3、成。簡(jiǎn)易數(shù)字鐘:設(shè)計(jì)一個(gè)以“秒”為基準(zhǔn)信號(hào)的簡(jiǎn)易數(shù)字鐘,顯示時(shí)、分、秒,同時(shí)可實(shí)現(xiàn)整點(diǎn)報(bào)時(shí)和清零(我已經(jīng)完成,而且已經(jīng)驗(yàn)收了)。2、自選題目:在完成了數(shù)字鐘的設(shè)計(jì)后,我選擇了另一個(gè)設(shè)計(jì)的題目,那就是 PS2 鍵盤掃描。所以這次課程設(shè)計(jì)我的報(bào)告主要詳細(xì)寫的是 PS2鍵盤掃描的程序,而不是簡(jiǎn)易數(shù)字鐘。PS鍵盤掃描:設(shè)計(jì)一個(gè)PS鍵盤掃描程序,能接受鍵盤的輸入時(shí)鐘和數(shù)據(jù),區(qū)別哪一個(gè) 鍵輸入,同時(shí)解譯通碼和斷碼,使用 LED 燈來顯示收到的數(shù)據(jù)。三、課程設(shè)計(jì)的內(nèi)容與要求1、設(shè)計(jì)內(nèi)容系統(tǒng)功能的分析;實(shí)現(xiàn)系統(tǒng)功能的實(shí)際方案;3)4)編寫各功能模塊的 VHDL 語(yǔ)言程序; 對(duì)各功能模塊進(jìn)行編譯、綜合、仿真、分
4、析;5)頂層文件設(shè)計(jì)6)對(duì)整個(gè)系統(tǒng)進(jìn)行編譯、綜合、仿真、分析;在 CPLDFPGA 實(shí)驗(yàn)開發(fā)系統(tǒng)試驗(yàn)箱上進(jìn)行硬件驗(yàn)證;寫實(shí)驗(yàn)報(bào)告;2、設(shè)計(jì)要求1)按所布置的題目要求,每一位學(xué)生獨(dú)立完成全過程;(2)分模塊層次化設(shè)計(jì);(3)各功能模塊的底層文件必須用 VHDL語(yǔ)言設(shè)計(jì),頂層文件可用 VHDL語(yǔ)言設(shè)計(jì),也可以用原理圖設(shè)計(jì)。四、實(shí)驗(yàn)儀器設(shè)備PC機(jī);Quartusll 軟件;黑金FPGA實(shí)驗(yàn)開發(fā)系統(tǒng),芯片為 Cyclone II的EP2C5Q208C8;五、設(shè)計(jì)方案1、PS2解碼圖1為PS2的接口圖。我使用的的右邊的 PS2接口,即1腳為數(shù)據(jù)腳,5腳為時(shí)鐘腳,同時(shí)我編寫的VHDL代碼只對(duì)1腳和5腳操作
5、。idlePS2CLKidlePS2DATA StartDO DI 1 D3D3 1 D4 1 D5 16D7 Pstop議時(shí)序圖圖2 PS2協(xié)圖2為PS2協(xié)議時(shí)序圖。由圖可以解讀出,PS2協(xié)議對(duì)數(shù)據(jù)的讀取時(shí)“ CLK的下降沿”有效,而數(shù)據(jù)的放置時(shí)在“ CLK的上升沿”。PS2頻率比較慢,大概為10KHZ。第N位屬性0開始位18數(shù)據(jù)位9校驗(yàn)位10結(jié)束位表1 PS2數(shù)據(jù)說明PS2的一幀數(shù)據(jù)時(shí)11位。對(duì)PS2進(jìn)行解碼,我們需要得到的是18位的數(shù)據(jù)位。其他的位,可以使用取巧的方法編寫。鍵盤的編碼有“通碼(Make)”和“斷碼(Break)”之分。通碼相當(dāng)于某個(gè)按鍵按下10個(gè)X了,斷碼相當(dāng)于某個(gè)按鍵釋
6、放了。假設(shè),我們按下了“Z”鍵不放,大約每秒有“1A”的通碼(10KHZ),而當(dāng)我們釋放“ Z”鍵,就會(huì)輸出斷碼X “F0”和X “1A”。同 時(shí),鍵盤編碼一次只能有一個(gè)輸出,即多個(gè)按鍵同時(shí)按下時(shí),只有一個(gè)有效。F表為第二套PC鍵盤掃描碼。鍵名通碼斷碼-1鍵名通碼斷碼-鍵名通碼斷碼A1CF0,1C946F0,4654'FO,54B32F0,32i、OEF0,0EINSERTE0,70E0,F0,70C21F0,21-4EF0,4EHOMEE0,6CE0,F0,6CD23F0,23=55FO,55PG UPE0,7DE0,F0,7DE24F0,245DF0,5DDELETEE0,71E0
7、,F0,71F2BF0,2BBKS P66F0,66ENDE0,69E0,F0,69G34F0,34SPACE29F0,29PG DNE0,7AE0,F0,7AH33F0,33TAB0DF0,0DUARROW/ E0,75E0,F0,75I43F0,43CAPS58F0,58LARROWE0,6BE0,F0,6BJ3BF0,3BL SHFT12FO,12DARROWf E0,72E0,F0,72K42F0,42L CTRL14FO,14RARROWf E0,74E0,F0,74L4BF0,4B1 L GUIE0,1FE0,F0,1FNUM77F0,77M3AF0,3A1 L ALT11F0,1
8、1KP /E0,4AE0,F0,4AN31F0,31R SHFT59F0,59KP *7CF0,7CO44F0,44R CTRLE0,14E0,F0,14KP -7BF0,7BP4DF0,4D1 R GUIE0,27E0,F0,27KP +79F0,79Q15F0,15R ALTE0,11E0,F0,11KP EN1 E0,5AE0,F0,5AR2DF0,2DAPPSE0,2FE0,F0,2FKP .71F0,71S1BF0,1BENTER5AF0,5AKP 070F0,70T2CF0,2CESC76F0,76KP 169F0,69U3CF0,3CF105F0,05KP 272F0,72V2A
9、F0,2AF206F0,06KP 37AF0,7AW1DF0,1DF304F0,04KP 46BF0,6B1X22F0,22F40CF0,0CKP 573F0,73Y35F0,35F503F0,03KP 674F0,74Z1AF0,1AF60BF0,0BKP 76CF0,6C1045F0,45F783F0,83KP 875F0,75 I116F0,16F80AF0,0AKP 97DF0,7D21EF0,1EF901F0,015BF0,5B326F0,26F1009F0,09J4CF0,4C425F0,25F1178F0,78152F0,5252EF0,2EF1207F0,0741F0,4163
10、6F0,36P RNTSCRNE0,12,E0,7C?E0,F0,7C,E0,F0,12?49F0,4973DF0,3DSCROLL7EF0,7E/4AF0,4A3EF0,3EP AUSEE1,14,77,E1,F0,14,F0,77-NONE-表2 PC鍵盤第二套掃描碼2、設(shè)計(jì)思路(1)PS2時(shí)鐘的檢測(cè);(2)PS2數(shù)據(jù)的接受并提取需要的8位數(shù)據(jù);(3)對(duì)PS2提取的8位數(shù)據(jù)進(jìn)行解碼,確定按鍵;通過led燈顯示按鍵的解碼的結(jié)果;(5)設(shè)置多個(gè)按鍵,多種led顯示方式;對(duì)于PS2鍵盤掃描程序,我的設(shè)計(jì)思路是一個(gè)模塊一個(gè)功能,這樣能清晰分辨模塊,同時(shí)易于修改代碼。代碼條理清晰,便于解讀。而對(duì)于多
11、個(gè)模塊則使用層次化的形式來編寫,頂層文件并不包含功能的設(shè)定,只包含各個(gè)子功能模塊。3、模塊設(shè)計(jì)PS2鍵盤掃描分為:電平檢測(cè),PS2解碼,PS2組合,led控制和總PS組合六個(gè)模塊。F面為各個(gè)模塊的簡(jiǎn)易模塊圖。PS2時(shí)鐘檢測(cè)模塊:PS2 CLK Pin In電平檢測(cè)模塊H_l_ Sigl_ H_Sig»P S2_detect_moduleZZz圖3 電平檢測(cè)模塊圖(2)PS2解碼模塊:PS2 Data Pin InPS2解碼模塊PS2 DataPS2組合模塊:P S2_e ncode_module< /圖4 PS2解碼模塊圖P S2_D on e_SigPS2 CLK Pin I
12、nZ電平檢測(cè)模塊P S2_detect_module<JPS2解碼模塊PS2 DataPS2 Data Pin InPS2 encode moduleJ 丿PS2_D on e_Sig圖5 PS2組合模塊圖(4)控制LED模塊:PS2 DataP S2_D on e_Sig電平檢測(cè)模塊P S2_co ntrol_module /LED控制模塊圖Data Out(5) PS2總的組合模塊:ARCHITECTURE PS2 detect OF PS2 detect module IS-結(jié)構(gòu)體聲明PS2_CLK_Pin_ InPS2 Data Pin In電平檢測(cè)模塊PS2_DatPS2_Do
13、 ne_Sig電平檢測(cè)模塊Data OutP S2_co ntrol_moduleJ P S2_c on trol_module 一ZPS2模塊圖4、各模塊分析(1) PS2時(shí)鐘檢測(cè)模塊PS2電平檢測(cè)模塊主要的作用是檢測(cè)PS2接口鍵盤的時(shí)鐘信號(hào),因?yàn)镻S2的協(xié)議規(guī)定數(shù)據(jù)是在時(shí)鐘的下降沿讀取的。所以電平檢測(cè)模塊要檢測(cè)PS2時(shí)鐘的下降沿,有下降沿來臨-庫(kù)-實(shí)體聲明時(shí),要做相應(yīng)的數(shù)據(jù)讀取動(dòng)作。下面是代碼的分析。1_1 BRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PS2 detect mod
14、ule ISP ORT(CLK,RSTn:IN STD_LOGIC;PS2 CLK Pin In:IN STD_LOGIC;H_L_Sig:OUT STD_LOGIC;-電平由高變低,輸出一個(gè)信號(hào)L_H_Sig:OUT STD LOGIC-電平由低變高,輸出一個(gè)信號(hào));END ENTITY P S2_detect_module;SIGNAL H_L_F1 : STD_LOGIC :='1'-聲明4個(gè)信號(hào),用于電平輸入的變化-4個(gè)信號(hào)都賦了初值-同步進(jìn)行IF (RSTn='0') THEN-同步復(fù)位動(dòng)作SIGNAL H_L_F2 : STD_LOGIC :=
15、9;1'SIGNAL L_H_F1 : STD_LOGIC =0:SIGNAL L_H_F2 : STD_LOGIC :='0'BEGINP ROCESS(CLK,RSTn)BEGINIF (CLK'event AND CLK='1') THENH_L_F1 <= '1'H_L_F2 <= '1'L_H_F1 <= '0'L_H_F2 <= '0'ELSEH_L_F1 <= P S2_CLK_ Pin_ln;H_L_F2 <= H_L_F1;L_H
16、_F1 <= P S2_CLK_ Pin_ln;L_H_F2 <= L_H_F1;END IF;END IF;END P ROCESS;-輸出信號(hào)-結(jié)構(gòu)體結(jié)束H_L_Sig <= H_L_F2 AND (NOT H_L_F1);L_H_Sig <= L_H_F1 AND (NOT L_H_F2);END ARCHITECTURE P S2_detect;在結(jié)構(gòu)體中聲明了 4個(gè)信號(hào),用于電平的檢測(cè)F2信號(hào)是接著F1信號(hào)的,如果F1信號(hào)變化了,F(xiàn)2信號(hào)還不會(huì)立即變化,F(xiàn)2還會(huì)保持F1的前一個(gè)狀態(tài),以兩者的邏輯關(guān)系,可以判斷輸入的是上升沿還是下降沿。結(jié)果如表格3。時(shí)間H_L_
17、F1H_I_F2H_L_Sig <= H_L_F2 AND (NOT H_L_F1)Initial110T1011T2000時(shí)間L_H_F1L_H_F2L_H_Sig <= L_H_F1 AND (NOT L_H_F2);Initial000T1101T2110表 3 電平檢測(cè)變化表-庫(kù)-實(shí)體聲明2) PS2 解碼模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PS2_decode_module ISPORT(CLK,RSTn: IN STD_LOGIC;H_L_Si
18、g: IN STD_LOGIC;PS2_Data_Pin_In: IN STD_LOGIC;PS2_Done_Sig: OUT STD_LOGIC;PS2_Data: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY PS2_decode_module;-聲明一個(gè)完成信號(hào)ARCHITECTURE PS2_decode OF PS2_decode_module ISSIGNAL Done : STD_LOGIC :='0'SIGNAL i: STD_LOGIC_VECTOR(4 DOWNTO 0) :="00001"- 聲
19、明步驟 iSIGNAL Data : STD_LOGIC_VECTOR(7 DOWNTO 0) :=X"32"BEGINPROCESS(CLK,RSTn,i)BEGINIF (CLK'event AND CLK='1') THENIF (RSTn='0') THENi <= "00001"Done <= '0'Data <= X"00"ELSECASE i ISWHEN "00000" => i <= "00001&qu
20、ot;WHEN "00001" => IF (H_L_Sig='1') THEN i <= "00010"Data(0) <= PS2_Data_Pin_In;END IF;WHEN "00010" => IF (H_L_Sig='1') THEN i <= "00011"Data(1) <= PS2_Data_Pin_In;END IF;WHEN "00011" => IF (H_L_Sig='1') T
21、HEN i <= "00100"Data(2) <= PS2_Data_Pin_In;END IF;WHEN "00100" => IF (H_L_Sig='1') THEN i <= "00101"Data(3) <= PS2_Data_Pin_In;END IF;WHEN "00101" => IF (H_L_Sig='1') THEN i <= "00110"Data(4) <= PS2_Data_Pin_In
22、;END IF;WHEN "00110" => IF (H_L_Sig='1') THEN i <= "00111"Data(5) <= PS2_Data_Pin_In;END IF;WHEN "00111" => IF (H_L_Sig='1') THEN i <= "01000"Data(6) <= PS2_Data_Pin_In;END IF;WHEN "01000" => IF (H_L_Sig='1
23、9;) THEN i <= "01001"Data(7) <= PS2_Data_Pin_In;END IF;WHEN "01001" => IF (H_L_Sig='1') THEN i <= "01010"END IF;WHEN "01010" => IF (H_L_Sig='1') THEN i <= "01011"END IF;WHEN "01011" => IF (Data=X"F0
24、")THEN i <= "01100"ELSE i <= "10110"END IF;WHEN "01100" => IF (H_L_Sig='1') THEN i <= "01101"END IF;WHEN "01101" => IF (H_L_Sig='1') THEN i <= "01110"END IF;WHEN "01110" => IF (H_L_Sig=
25、9;1') THEN i <= "01111"END IF;WHEN "01111" => IF (H_L_Sig='1') THEN i <= "10000"END IF;WHEN "10000" => IF (H_L_Sig='1') THEN i <= "10001"END IF;WHEN "10001" => IF (H_L_Sig='1') THEN i <= &quo
26、t;10010"END IF;WHEN "10010" => IF (H_L_Sig='1') THEN i <= "10011"END IF;WHEN "10011" => IF (H_L_Sig='1') THEN i <= "10100"END IF;WHEN "10100" => IF (H_L_Sig='1') THEN i <= "10101"END IF;WHEN &q
27、uot;10101" => IF (H_L_Sig='1') THEN i <= "10110"END IF;WHEN "10110" => IF (H_L_Sig='1') THEN i <= "10111"Done <= '1'END IF;WHEN "10111" => IF (H_L_Sig='1') THEN i <= "00001"Done <= '0
28、39;END IF;WHEN OTHERS => i <= "00001"END CASE;END IF;END IF;END PROCESS;PS2_Data <= Data;PS2_Done_Sig <= Done;END ARCHITECTURE PS2_decode;這個(gè)模塊我有點(diǎn)偷懶,只對(duì)鍵盤輸入的 8 位有效數(shù)據(jù)進(jìn)行了提取,其他位基本是忽略了,第一位開始位忽略了,然后是讀取 8 位有效數(shù)據(jù),第 9 步和第 10步跳過了檢測(cè)位和結(jié)束位,然后是判斷。如果是OXFO,則證明是斷碼,斷碼的話后面的直接跳過,如果不是OXFO,則證明是有效的數(shù)據(jù),立
29、即跳到步驟22,向頂層的模塊回饋一個(gè)完成信號(hào),并將有效數(shù)據(jù)輸出。3) PS2 組合模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PS2 ISPORT(CLK,RSTn: IN STD_LOGIC;PS2_Data_Pin_In :IN STD_LOGIC;PS2_CLK_Pin_In: IN STD_LOGIC;PS2_Done_Sig: BUFFER STD_LOGIC;PS2_Data: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY
30、 PS2;ARCHITECTURE PS2_behave OF PS2 ISCOMPONENT PS2_detect_modulePORT(CLK,RSTn: IN STD_LOGIC;PS2_CLK_Pin_In : IN STD_LOGIC;H_L_Sig: OUT STD_LOGIC;L_H_Sig: OUT STD_LOGIC);END COMPONENT;COMPONENT PS2_decode_modulePORT(CLK,RSTn: IN STD_LOGIC;H_L_Sig: IN STD_LOGIC;PS2 Data Pin In:IN STD_LOGIC;);P S2_Don
31、e_Sig:OUT STD_LOGIC;PS2 Data:OUT STD_LOGIC_VECTOR(7 DOWNTO 0)END COMPO NENT;COMPONENT PS2 code moduleP ORT(CLK,RSTn:IN STD_LOGIC;L_H_Sig:IN STD_LOGIC;P S2_Done_Sig:IN STD_LOGIC;PS2 Data Pin Out : OUT STD LOGIC);END COMPO NENT;SIGNAL H_L : STD_LOGIC;SIGNAL L_H : STD_LOGIC;SIGNAL P S2_Data_ Pin_Out :
32、STD_LOGIC;BEGINU1: PS2_detect_module P ORT MAP (CLK,RSTn, PS2_CLK_ Pin_ln,H_L, l_H);U2:P S2_decode_module P ORT MAP( CLK,RSTn,H_L ,P S2_Data_ Pinn,P S2_Done_Sig ,P S2_Data);U2:P S2_decode_module P ORT MAP( CLK,RSTn,H_L ,P S2_Data_ Pin_ Out ,P S2_Done_Sig ,P S2_Data);U3:P S2_code_moduleP ORT MAP( CLK
33、,RSTn,L_ H,P S2_Done_Sig ,P S2_Data_ Pin_Out);END ARCHITECTURE P S2_behave;這是一個(gè)組合例化的模塊,是對(duì) PS2時(shí)鐘電平檢測(cè)和PS2解碼的一個(gè)簡(jiǎn)單模塊。這一個(gè)模塊初步實(shí)現(xiàn)了 PS2的解碼功能。上面的是代碼的方法實(shí)現(xiàn)例化功能,同時(shí)也可以使用原理圖的方式來實(shí)現(xiàn)例化,下面為原理圖例化的圖。圖8 PS2例(4) 控制LED模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PS2_contorl_module ISPO
34、RT(CLK,RSTn: IN STD_LOGIC;PS2_Done_Sig: IN STD_LOGIC;PS2_Data: IN STD_LOGIC_VECTOR(7 DOWNTO 0);Data_Out: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY PS2_contorl_module;ARCHITECTURE PS2_contorl OF PS2_contorl_module ISSIGNAL Data : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGINPROCESS(CLK,RSTn)BEGINIF (CLK'e
35、vent AND CLK='1') THENIF (RSTn='0') THENData <= "0001"ELSIF(PS2_Done_Sig='1') THENCASE PS2_Data ISWHEN X"22" => Data <= (Data(2 DOWNTO 0)&Data(3);WHEN X"1A" => Data <= (Data(0)&Data(3 DOWNTO 1);WHEN X"14" => Da
36、ta <= (Data(0)&Data(1)&Data(2)&Data(3);WHEN X"21" => Data <= "1111"WHEN X"2A"=>Data <= "0000"WHEN X"5A" => Data <= "0001"WHEN X"32"=>Data <= "0001"WHEN X"31" => Data &l
37、t;= "0011"WHEN X"3A"=>Data <= "0111"WHEN OTHERS => Data <= Data;END CASE;END IF;END IF;END PROCESS;Data_Out <= Data;END ARCHITECTURE PS2_contorl;LED控制模塊主要的作用是用于顯示結(jié)果。在 PS2鍵盤掃描后,得到的8位有效結(jié)果,使用 4 盞 LED 燈作為檢查結(jié)果的輸出,使用不用的 LED 閃亮方式來表示不同的按鍵按下了。本程序只做了 11 個(gè)按鍵,分別是“ Z”
38、 ,“X” ,“C” ,“V” ,“B” ,“N” ,“M”“En tet”和“ Ctrl”。” Z ”按下后,LED向左移一個(gè)單位,“ X ”是向右移一個(gè)單位,“Ctrl”是LED燈互換,“ B”是點(diǎn)亮一盞LED, “N”是點(diǎn)亮兩盞LED, “M”是點(diǎn)亮三盞LED, “Entet”是復(fù)原LED燈的情況。(5) PS2總的組合模塊LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PS2_module ISPORT(CLK,RSTn: IN STD_LOGIC;PS2_Data_Pin_
39、In: IN STD_LOGIC;PS2_CLK_Pin_In: IN STD_LOGIC;Data_Out: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);END ENTITY PS2_module;ARCHITECTURE PS2 OF PS2_module ISCOMPONENT PS2PORT(CLK,RSTn: IN STD_LOGIC;PS2_Data_Pin_In: IN STD_LOGIC;PS2_CLK_Pin_In: IN STD_LOGIC;P S2_Done_Sig:OUT STD_LOGIC;PS2 Data:OUT STD_LOGIC_VECTO
40、R(7 DOWNTO 0);END COMPO NENT;COMPONENT PS2 contorl moduleP ORT(CLK,RSTn:IN STD_LOGIC;);P S2_Done_Sig:IN STD_LOGIC;PS2 DataData OutEND COMPO NENT;SIGNAL Done_SigSIGNAL DataBEGINU1: PS2U1: PS2U2:PS2 contorl:IN STD_LOGIC_VECTOR(7 DOWNTO 0);:OUT STD_LOGIC_VECTOR(3 DOWNTO 0):STD_LOGIC;:STD_LOGIC_VECTOR(7
41、 DOWNTO 0);P ORT MAP( CLK,RSTn ,P S2_Data_ Pin_ln ,P S2_CLK_ Pin_ln,Done_Sig,Data);P ORT MAP( CLK,RSTn, PS2_CLK_ Pin_ln,Done_Sig,Data);moduleP ORT MAP (CLK,RSTn,Done_Sig,Data,Data_Out);END ARCHITECTURE PS2;這是一個(gè)組合例化的模塊,是對(duì) PS2功能模塊和LED控制的一個(gè)簡(jiǎn)單組合的模塊。這一個(gè)模塊是PS2鍵盤掃描的最頂層文件,只做例化作用,不包含其他功能代碼。上面的是代碼的方法實(shí)現(xiàn)例化功能,同時(shí)
42、也可以使用原理圖的方式來實(shí)現(xiàn)例化,下面為原理圖例化的圖。PS2 module總例化原理圖六、綜合與仿真1、綜合 對(duì)編寫好的源程序進(jìn)行綜合,同時(shí)生成 RTL 電路圖, RTL 電路圖如下。 圖 10 PS2_module 模塊 RTL 圖2、仿真在本次設(shè)計(jì)中,仿真工作只對(duì)電平檢測(cè)模塊,LED燈控制模塊和PS2 module總模塊進(jìn)行了仿真。對(duì)于前兩個(gè)模塊,采用的仿真方法是使用 Quartus ll 自帶的波形仿真軟件進(jìn)行仿 真,而對(duì)于PS2_module總模塊的仿真則使用了編寫代碼的方式進(jìn)行仿真。因?yàn)镻S2_module總模塊對(duì)鍵盤按鍵的波形設(shè)置很麻煩,而且仿真效果不好,所以直接使用代碼的方式產(chǎn)
43、生 一個(gè)鍵盤按鍵,同時(shí)觀察波形來檢測(cè)。1)電平檢測(cè)模塊仿真電平檢測(cè)模塊原理圖如下:圖 11 電平檢測(cè)原理圖仿真波形如下:圖 12 電平檢測(cè)模塊仿真波形系統(tǒng)時(shí)鐘給了 10ns, PS2_CLK_Pin_ln給了 100ns, RSTn復(fù)位一直為高電平,可以觀察波形得到,在 PS2_CLK_Pin_In 時(shí)鐘的上升沿發(fā)生后, L_H_Sig 發(fā)出了一個(gè)高脈沖的信號(hào), 大概相隔兩個(gè)系統(tǒng)時(shí)鐘;在 PS2_CLK_Pin_In 時(shí)鐘的下降沿發(fā)生后, H_L_Sig 也發(fā)出了一個(gè) 高脈沖,也是相隔兩系統(tǒng)時(shí)鐘,而高脈沖大概是兩個(gè)系統(tǒng)時(shí)鐘左右。(2) LED 燈控制模塊仿真LED 燈控制模塊原理圖如下:圖 1
44、3 LED 燈控制模塊原理圖仿真波形如下:圖 14 LED 燈控制模塊仿真波形系統(tǒng)時(shí)鐘給了 10ns, RSTn 復(fù)位在一開始的時(shí)候給了 0',進(jìn)行了一次復(fù)位,PS2_Done_Sig完成信號(hào)則是100ns 次,PS2_Data給的是X “22” (即X被按下)。復(fù)位后Data_Out輸出的是“ 0001”,第一盞LED燈點(diǎn)亮,然后在 PS2_Done_Sig信號(hào)后,Data_Out輸出變化了,變?yōu)榱恕?0010”, LED 第二盞給點(diǎn)亮了, LED 燈移位了。因?yàn)橐恢笔?X 被按 下,所以信號(hào)不斷移位,LED分別為1, 2, 4, &在最后那里,由于PS2_Data給的是X“
45、20”,并沒有在控制那設(shè)置這個(gè)按鍵,所以LED 沒反應(yīng),一直保持在 2(即第二盞燈點(diǎn)亮)。(3) PS2_module總模塊仿真由于PS2總仿真的時(shí)候需要鍵盤的通碼輸入,但使用波形的改變來作為通碼輸入的方式太麻煩了,而且很容易出錯(cuò),得不到想要的波形。所以為了克服這個(gè)問題,我使用了另外的一種方法來仿真,直接寫鍵盤編碼來給整個(gè)模塊,然后開輸出波形就可以觀察。PS2 module總模塊仿真點(diǎn)簡(jiǎn)單方框圖如下:鍵盤編碼模塊L_H_Sig電平檢測(cè)模塊P S2_code_moduleP S2_detect_module!JPS2 CLK Pin InPS2 Data Pin InH_L_Sigr*-PS2
46、Data PS2_Done_SigPS2解碼模塊PS2 en code module圖15 PS2 module總模塊方框圖PS2_code_module鍵盤編碼模塊代碼如下:1_1 BRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY PS2 code module ISP ORT(CLK,RSTn:IN STD_LOGIC;L_H_Sig:IN STD_LOGIC;P S2_Done_Sig:IN STD_LOGIC;PS2 Data Pin Out : OUT STD LOGIC);EN
47、D ENTITY P S2_code_module;ARCHITECTURE PS2 code OF PS2 code module ISCONSTANT n_O:STD_LOGIC_VECTOR:=X"22"CONSTANT n_1:STD_LOGIC_VECTOR:=X"1A"CONSTANT n_2:STD_LOGIC_VECTOR:=X"14"CONSTANT n_3:STD_LOGIC_VECTOR:=X"21"CONSTANT n_4:STD_LOGIC_VECTOR:=X"2A"C
48、ONSTANT n_n:STD_LOGIC_VECTOR:=X"F0"SIGNAL data : STD_LOGIC :='0'SIGNAL i : STD_LOGIC_VECTOR(4 DOWNTO 0) :="00000"BEGINPROCESS(CLK,RSTn,i)BEGINIF (CLK'event AND CLK='1') THENIF (RSTn='0') THENi <= "00000"data <= '0'ELSECASE i ISW
49、HEN "00000" => i <= "00001"WHEN "00001" => IF (L_H_Sig='1') THEN i <= "00010"data <= n_1(0);END IF;WHEN "00010" => IF (L_H_Sig='1') THEN i <= "00011"data <= n_1(1);END IF;WHEN "00011" =>
50、IF (L_H_Sig='1') THEN i <= "00100"data <= n_1(2);END IF;WHEN "00100" => IF (L_H_Sig='1') THEN i <= "00101"data <= n_1(3);END IF;WHEN "00101" => IF (L_H_Sig='1') THEN i <= "00110"data <= n_1(4);END IF;WH
51、EN "00110" => IF (L_H_Sig='1') THEN i <= "00111"data <= n_1(5);END IF;WHEN "00111" => IF (L_H_Sig='1') THEN i <= "01000"data <= n_1(6);END IF;WHEN "01000" => IF (L_H_Sig='1') THEN i <= "01001"
52、data <= n_1(7);END IF;WHEN "01001" => IF (L_H_Sig='1') THEN i <= "01010"END IF;WHEN "01010" => IF (L_H_Sig='1') THEN i <= "01011"END IF;WHEN "01011" => IF (PS2_Done_Sig='1') THEN i <= "01100"END IF;WHEN "01100" => IF (L_H_Sig='1') THEN i <= "01101"data <= n_n(0);END IF;WHEN "01101" => IF
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年度年福建省高校教師資格證之高等教育心理學(xué)能力檢測(cè)試卷A卷附答案
- 2024年度山西省高校教師資格證之高等教育法規(guī)??寄M試題(全優(yōu))
- 2024年柔性樹脂版項(xiàng)目資金籌措計(jì)劃書代可行性研究報(bào)告
- 2024年全國(guó)注冊(cè)安全工程師安全生產(chǎn)法律知識(shí)考試題庫(kù)(含答案)
- 三年級(jí)數(shù)學(xué)計(jì)算題專項(xiàng)練習(xí)及答案集錦
- 2024年車輛購(gòu)買協(xié)議模板
- 2024限量啤酒銷售協(xié)議模板
- 2024年度日本商業(yè)協(xié)議模板集錦
- 2024企業(yè)間緊急無償借款協(xié)議樣本
- 2024年度畢業(yè)生見習(xí)就業(yè)協(xié)議范本
- 中學(xué)生法律知識(shí)競(jìng)賽考試題庫(kù)200題(含各題型)
- 公園保潔服務(wù)投標(biāo)方案
- 食品保質(zhì)期延長(zhǎng)技術(shù)研究
- 初中數(shù)學(xué)試題大全(六十九)尺規(guī)作圖難題
- 2024-2030年中國(guó)索道纜車市場(chǎng)運(yùn)行狀況與未來經(jīng)營(yíng)模式分析報(bào)告
- 高一思想政治上冊(cè)2024-2025學(xué)年達(dá)標(biāo)測(cè)試試卷及答案部編版
- SHT+3413-2019+石油化工石油氣管道阻火器選用檢驗(yàn)及驗(yàn)收標(biāo)準(zhǔn)
- 09BJ13-4 鋼制防火門窗、防火卷簾
- 初二廣東省深圳市道德與法治上冊(cè)期中測(cè)試試題及答案
- 古詩(shī)詞誦讀《江城子-乙卯正月二十日夜記夢(mèng)》公開課一等獎(jiǎng)創(chuàng)新教學(xué)設(shè)計(jì)統(tǒng)編版高中語(yǔ)文選擇性必修上冊(cè)
- 單身證明書12篇
評(píng)論
0/150
提交評(píng)論