版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 題 目 HDL項(xiàng)目設(shè)計(jì) </p><p><b> 摘要:</b></p><p> 鍵盤是最常用人機(jī)接口設(shè)備之一,在嵌入式系統(tǒng)中有著相當(dāng)廣泛的應(yīng)用。一般自行設(shè)計(jì)的簡(jiǎn)易矩陣鍵盤僅僅是按行、列排列起來的矩陣開關(guān)。當(dāng)需要較多的按鍵時(shí),則會(huì)
2、占用較多的I/O 端口,在軟件上則要進(jìn)行上電復(fù)位按鍵掃描及通信處理,而且還要加上按鍵的去抖動(dòng)處理,增大了軟硬件開銷。而PS/2 鍵盤,內(nèi)嵌自動(dòng)去除按鍵抖動(dòng)設(shè)計(jì),自動(dòng)地識(shí)別鍵的按下與釋放,軟硬件開發(fā)簡(jiǎn)便,價(jià)格便宜,穩(wěn)定可靠,將PS/2 鍵盤作為嵌入式系統(tǒng)的輸入設(shè)備已經(jīng)成為可行的方案。</p><p> 本設(shè)計(jì)是以現(xiàn)場(chǎng)可編程邏輯器件(FPGA)為核心的PS/2接口鍵盤的輸入識(shí)別電路。利用QuartusⅡ軟件編寫ve
3、rilog HDL硬件描述語言程序以實(shí)現(xiàn)鍵盤部分簡(jiǎn)單鍵值的識(shí)別與輸出。本設(shè)計(jì)主要以程序?yàn)楹诵?,硬件電路的搭建使用FPGA實(shí)驗(yàn)箱,將程序頂層文件里定義的輸入輸出端口與實(shí)驗(yàn)箱管腳進(jìn)行相應(yīng)的配置,除實(shí)驗(yàn)箱上的reset鍵以外,外設(shè)是一個(gè)與實(shí)驗(yàn)箱通過PS/2接口相連的鍵盤。當(dāng)系統(tǒng)上電后,實(shí)驗(yàn)箱上的數(shù)碼管可以依次顯示從鍵盤上輸入的鍵值,并具有數(shù)碼管清零功能。</p><p><b> 關(guān)鍵詞:</b>
4、;</p><p> Ps/2接口鍵盤、輸入識(shí)別、FPGA 、Quartus Ⅱ、Verilog HDL</p><p><b> Abstract</b></p><p> The keyboard, as one of the most commonly used man-machine interface equipmen
5、t, has a wide application in embedded systems. General to design simple matrix keyboard is only per row, column arrangement up matrix switch. When need more button, will occupy more I/O port, in software, must carry on t
6、he power on the reset button scanning and communication processing, but also add buttons to jitter processing, increases the software and hardware cost. And PS / 2 keyboard, inline automatic remove key j</p><p
7、> This design based on field programmable logic devices (FPGA) is the core of the PS / 2 interface keyboard input identification circuit. Use verilog HDL Quartus Ⅱ writing software hardware description language progr
8、am to realize the keyboard part simple key value of the recognition and output. This design mainly program as the core, the construction of the hardware circuit using FPGA experimental box, will be the top procedure defi
9、ned in the file input/output port and experimental XiangGuan foot </p><p> Keywords: Ps / 2 interface keyboard input identification FPGA,</p><p> QuartusⅡ Verilo
10、g HDL</p><p><b> 目錄</b></p><p> 摘要 2</p><p> 一.系統(tǒng)設(shè)計(jì) 5</p><p> 1.1設(shè)計(jì)目標(biāo)
11、 5</p><p> 1.2方案對(duì)比與確定 5</p><p> 1.3總體設(shè)計(jì)框圖及說明 6</p><p> 1.3.1 總體設(shè)計(jì)框圖
12、 6</p><p> 1.3.2總體設(shè)計(jì)端口說明 6</p><p> 1.4模塊電路設(shè)計(jì)及說明 7</p><p> 1.4.1鍵盤數(shù)據(jù)接收部分
13、 7</p><p> 1.4.2數(shù)碼管顯示部分 8</p><p> 二.結(jié)果與討論 9</p><p> 2.1調(diào)試步驟 9</p&
14、gt;<p> 2.2調(diào)試現(xiàn)象 9</p><p> 2.3問題與分析 9</p><p> 三.軟件設(shè)計(jì) 10</p>&l
15、t;p> 3.1程序流程圖 10</p><p> 3.2程序設(shè)計(jì) 11</p><p> 四.心得體會(huì) 17</p><p>
16、; 五.參考文獻(xiàn) 17</p><p> 六.附錄 18</p><p><b> 第一章 系統(tǒng)設(shè)計(jì)</b></p><p> 1.1
17、0; 系統(tǒng)設(shè)計(jì)目標(biāo)</p><p> ?。?)以通用的PS2鍵盤為輸入,設(shè)計(jì)一個(gè)能夠識(shí)別PS2鍵盤輸入編碼的電路,并把鍵值通過數(shù)碼管顯示;</p><p> ?。?)至少能夠識(shí)別0~9的數(shù)字鍵。</p><p> 1.2 方案對(duì)比分析與確定</p><p>
18、<b> 方案一:</b></p><p> 使用現(xiàn)場(chǎng)可編程邏輯器件(FPGA)制作,利用Verilog HDL硬件描述語言編程進(jìn)行控制,然后下載至實(shí)驗(yàn)箱實(shí)現(xiàn)。利用QuartusⅡ軟件編寫verilog HDL硬件描述語言程序以實(shí)現(xiàn)鍵盤部分簡(jiǎn)單鍵值的識(shí)別與輸出。硬件電路的搭建使用FPGA實(shí)驗(yàn)箱,將程序頂層文件里定義的輸入輸出端口與實(shí)驗(yàn)箱管腳進(jìn)行相應(yīng)的配置,除實(shí)驗(yàn)箱上的reset鍵以外,外
19、設(shè)是一個(gè)與實(shí)驗(yàn)箱通過PS/2接口相連的鍵盤。</p><p><b> 方案二:</b></p><p> 采用單片機(jī)來實(shí)現(xiàn)鍵盤識(shí)別,它的原理方框圖與用FPGA來實(shí)現(xiàn)的原理方框圖類似,它由控制輸入電路(及鍵盤)、C51單片機(jī)、數(shù)碼管組成。兩者基本原理都相同,唯一不同的是一個(gè)是用單片機(jī)來實(shí)現(xiàn),一個(gè)是用FPGA來制作。采用單片機(jī)來實(shí)現(xiàn)PS/2接口鍵盤的輸入識(shí)別電路,主
20、要的核心是單片機(jī)程序的設(shè)計(jì)。</p><p><b> 方案比較:</b></p><p> 兩個(gè)方案均可以實(shí)現(xiàn)PS/2接口鍵盤的輸入識(shí)別電路的設(shè)計(jì)。第一個(gè)方案采用的是現(xiàn)場(chǎng)可編程邏輯器件來實(shí)現(xiàn), 它的優(yōu)點(diǎn)是所有電路集成在一塊板子上,無需外圍連線,此方案所需的外圍電路簡(jiǎn)單,這樣它的體積就減少了,同時(shí)還提高了系統(tǒng)的穩(wěn)定度。還可以用軟件QuartusⅡ軟件進(jìn)行
21、仿真和調(diào)試等??梢猿浞掷肏DL硬件描述語言方便的編程,提高開發(fā)效率,縮短研發(fā)周期,降低研發(fā)成本;而且易于進(jìn)行功能的擴(kuò)展,實(shí)現(xiàn)方法靈活,調(diào)試方便,修改容易.第二個(gè)方案有它的優(yōu)點(diǎn),但同時(shí)也存在缺點(diǎn)。第二個(gè)方案中采用的是單片機(jī)來制作, 對(duì)設(shè)計(jì)者的要求比較高,設(shè)計(jì)者對(duì)軟硬件必須十分熟悉。和方案一來比它的實(shí)驗(yàn)仿真沒有方案一簡(jiǎn)單直觀,調(diào)試也有一定的難度。在外界環(huán)境相同的條件下,方案二設(shè)計(jì)出來的產(chǎn)品精度和穩(wěn)定度要比方案一稍微差一些。因此, PS/2
22、接口鍵盤的輸入識(shí)別電路的設(shè)計(jì)我們選擇方案一來實(shí)現(xiàn)。</p><p> 1.3 總體設(shè)計(jì)框圖及說明</p><p> 1.31 總體設(shè)計(jì)框圖:</p><p> 1.31總體設(shè)計(jì)的端口說明:</p><p> 設(shè)計(jì)分為兩部分。分別為鍵盤數(shù)據(jù)接收部分、數(shù)碼管顯示部分。</p><p>
23、輸入端:時(shí)鐘clk為系統(tǒng)時(shí)鐘。rst為復(fù)位按鍵低電平有效,clock和data_ps2為鍵盤的時(shí)鐘端和數(shù)據(jù)端。</p><p> 中間連線:data[3:0]為四位數(shù)據(jù)輸出(已轉(zhuǎn)化為十六進(jìn)制),change為按鍵放開信號(hào),back為Backspace按鍵信號(hào)。</p><p> 輸出端:dataout[7:0]為數(shù)碼管數(shù)據(jù)端,led_com[3:0]為數(shù)碼管位選。</p>
24、<p> 1.4 模塊電路設(shè)計(jì)及說明</p><p> 1.41鍵盤數(shù)據(jù)接收部分</p><p> 鍵盤PS/2的接口簡(jiǎn)介:</p><p> 接口的六個(gè)腳中,只有四個(gè)腳有意義,分別是:時(shí)鐘腳、數(shù)據(jù)腳、電源腳、電源地。其余為保留腳。PS/2靠系統(tǒng)的PS/2端口提供+5V電源。這里需要用到的即是:時(shí)鐘腳和數(shù)據(jù)腳。這兩個(gè)腳都是集電極開路,所以必須接
25、大阻值的上拉電阻。他們平時(shí)保持高電平,有輸出時(shí)才被拉到低電平,之后自動(dòng)上浮到高電平。</p><p> PS/2設(shè)備的clock和data平時(shí)都是高電平。當(dāng)設(shè)備等待發(fā)送數(shù)據(jù)時(shí),它首先檢查clock是否為高。如果為低,則認(rèn)為PC抑制了通訊,此時(shí)它緩沖數(shù)據(jù)知道獲得總線的控制權(quán)。如果clock為高電平,PS/2設(shè)備則開始向PC發(fā)送數(shù)據(jù)。一般都是PS/2設(shè)備產(chǎn)生市中心阿紅。發(fā)送按幀格式。數(shù)據(jù)位在clock為高電平時(shí)準(zhǔn)備
26、好,在clock下降沿被PC讀入。</p><p> 數(shù)據(jù)從鍵盤/鼠標(biāo)發(fā)送到主機(jī)或從主機(jī)發(fā)送到鍵盤/鼠標(biāo),時(shí)鐘都是PS/2設(shè)備產(chǎn)生,主機(jī)對(duì)時(shí)鐘控制有優(yōu)先權(quán),即主機(jī)想發(fā)送控制指令給PS/2設(shè)備時(shí),可以拉低時(shí)鐘線至少100us。然后再下拉數(shù)據(jù)線,最后釋放時(shí)鐘線為高。PS/2設(shè)備的時(shí)鐘線和數(shù)據(jù)線都是集電極開路的,容易實(shí)現(xiàn)拉低電平。</p><p> 其數(shù)據(jù)發(fā)送時(shí)序如下:</p>
27、<p><b> 鍵盤發(fā)送時(shí)序</b></p><p><b> 鍵盤接收時(shí)序</b></p><p> 因?yàn)槲覀兊墓δ苤簧婕暗芥I盤的數(shù)據(jù)發(fā)送,所以對(duì)接收不做具體說明。</p><p> 現(xiàn)在的PC機(jī)使用的PS/2鍵盤都默認(rèn)采用第二套掃描碼集,掃描碼有兩種不同的類型:通碼和斷碼。當(dāng)一個(gè)鍵被按下或持續(xù)按住
28、時(shí),鍵盤會(huì)將改鍵的通碼發(fā)送給主機(jī);而當(dāng)一個(gè)鍵被釋放時(shí),鍵盤會(huì)將該鍵的斷碼發(fā)送給主機(jī)。</p><p> 我們做的比較簡(jiǎn)單,因此只用到了第一類按鍵。(返回值見附錄)</p><p> 第一類按鍵:通碼為1字節(jié),斷碼為0xF0+通碼形式。如1鍵,其通碼為0x16,斷碼為0xF0 0x1C.</p><p> 在具體的實(shí)驗(yàn)過程中,PS/2鍵盤通過Clock管腳來控制
29、通信方向并且充當(dāng)本次實(shí)驗(yàn)的一個(gè)時(shí)鐘管腳,在鍵盤時(shí)鐘下,數(shù)據(jù)段進(jìn)行收發(fā)數(shù)據(jù),本次實(shí)驗(yàn)只是使用它來發(fā)送數(shù)據(jù),未設(shè)計(jì)鍵盤接收數(shù)據(jù)。每按下一個(gè)鍵,data管腳發(fā)送一個(gè)數(shù)據(jù)幀,具體格式如下:</p><p><b> PS/2鍵盤掃描碼</b></p><p><b> 此模塊的功能說明:</b></p><p> 當(dāng)按下一個(gè)
30、鍵時(shí),F(xiàn)PGA在時(shí)鐘信號(hào)下接受來自PS/2鍵盤的數(shù)據(jù)(8個(gè)數(shù)據(jù)位),接收完畢后鎖存并轉(zhuǎn)化為十六進(jìn)制數(shù)據(jù),例如4’ha。當(dāng)按鍵放開時(shí),發(fā)出信號(hào)change。這時(shí)開始識(shí)別按鍵,如果接收到8’d102,則表示接收到按鍵Backspace,則清空顯示數(shù)據(jù)。否則,數(shù)碼管進(jìn)行譯碼后則顯示鍵盤的鍵值。</p><p> 總體來說,此部分分為接收數(shù)據(jù)模塊、數(shù)據(jù)判斷與鎖存模塊、鍵值轉(zhuǎn)化模塊。</p><p&g
31、t; 1.4.2數(shù)碼管顯示部分</p><p><b> 此模塊的功能說明:</b></p><p> 這部分內(nèi)容較簡(jiǎn)單,由于已經(jīng)得到了鍵盤信息,在接收到change信號(hào)后,且十六進(jìn)制數(shù)據(jù)不是8’d102時(shí)(即不是Backspace清零信號(hào)),則根據(jù)數(shù)字對(duì)應(yīng)的通碼反過來找數(shù)字,經(jīng)過8段數(shù)碼管的譯碼后顯示鍵盤鍵值。</p><p> 可顯
32、示的鍵值有:0~9,a~f。</p><p> 此部分總體分為數(shù)據(jù)接收模塊、分頻模塊、位選信號(hào)模塊、譯碼模塊。之所以有分頻主要是為了提供數(shù)碼管動(dòng)態(tài)掃描的掃描頻率,頻率要適中。否則數(shù)碼管不能正常工作。</p><p> 第二章 實(shí)驗(yàn)結(jié)果與討論</p><p><b> 2.1調(diào)試步驟</b></p>&l
33、t;p> 1、運(yùn)行Quartus II軟件,新建工程和命名頂層文件。</p><p> 2、建立3個(gè)文本文件Verilog HDL File。分別為ps2_data_takein.v , Nixietube_display.v , top.v 。在文件中寫入程序。保存,編譯。</p><p> 3、分配管腳。保存,編譯。</p><p> 4
34、、先下載簡(jiǎn)單的程序,已確定實(shí)驗(yàn)箱可用。</p><p> 5、之后將生成的.sof文件下載至FPGA實(shí)驗(yàn)箱中。</p><p> 6、在鍵盤上一次輸入0~9,a~f。觀察數(shù)碼管顯示的數(shù)據(jù)是否與鍵盤的輸入鍵值相同。</p><p> 7、若不相同或不完全相同,則分模塊調(diào)試。</p><p><b> 2.2調(diào)試現(xiàn)象</b
35、></p><p> 1、分別輸入0~9和a~f,數(shù)碼管上均能正確顯示</p><p> 2、輸入Backspace,則清空數(shù)碼管上的數(shù)據(jù)。</p><p> 3、輸入其他的鍵值,數(shù)碼管不顯示。</p><p><b> 2.3問題分析</b></p><p> 調(diào)試過程中出現(xiàn)的問
36、題分析:</p><p> 生成不了.sof文件,編譯錯(cuò)誤。 分析:工程名、頂層文件名、模塊名的關(guān)系未理清。當(dāng)初建工程時(shí)所寫的頂層文件必須與后面的建立的頂層文件同名。</p><p> 數(shù)碼管顯示不穩(wěn)定; 分析:掃描頻率沒選定正確。</p><p> 3. 數(shù)碼管顯示不正確;
37、 分析:管腳配置不正確導(dǎo)致數(shù)碼管顯示異常。</p><p> 4. 重新分配管腳后,結(jié)果未變; 分析:重新配置管腳后,未運(yùn)行程序,使得下載進(jìn)去的仍為原先的程序。</p><p><b> 第三章 軟件設(shè)計(jì)</b></p><p><b> 3.1程序流程圖:</b></p>
38、;<p><b> 3.2程序設(shè)計(jì)</b></p><p><b> 鍵盤數(shù)據(jù)接收模塊:</b></p><p> module ps2_data_takein (rst,clk,ps2_clk,data_ps2,data,change,back);</p><p> input rst;</p
39、><p> input clk;</p><p> input ps2_clk;</p><p> input data_ps2;</p><p> output [3:0] data;</p><p> output change;</p><p> output back;</
40、p><p> reg ps2_clk0,ps2_clk1,ps2_clk2;</p><p> wire neg_ps2_clk;</p><p> reg [3:0] data;</p><p> wire change;//讀數(shù)信號(hào)</p><p> reg [3:0] num;</p><
41、;p> reg [7:0] temp_data;</p><p> reg [7:0] temp; //鎖存</p><p><b> reg back;</b></p><p> reg key_f0;//松鍵標(biāo)志,置1表示接收到8‘hf0,再接收到下一個(gè)數(shù)據(jù)后清零</p><p> always @(
42、posedge clk or negedge rst)</p><p><b> if(!rst)</b></p><p><b> begin</b></p><p> ps2_clk0 <= 1'b0;</p><p> ps2_clk1 <= 1'b0;&l
43、t;/p><p> ps2_clk2 <= 1'b0;</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> ps2_clk0 <=
44、 ps2_clk;</p><p> ps2_clk1 <= ps2_clk0;</p><p> ps2_clk2 <= ps2_clk1;</p><p><b> end</b></p><p> assign neg_ps2_clk = ps2_clk2 & ~ps2_clk1;<
45、;/p><p> always @(negedge clk or negedge rst) begin//接收數(shù)據(jù)模塊</p><p> if(!rst) begin</p><p> num<=4'd0;</p><p> temp_data<=8'd0;</p><p><b&
46、gt; end</b></p><p> else if(neg_ps2_clk) begin//檢測(cè)到clk為低</p><p><b> case(num)</b></p><p> 4'd0: begin </p><p> if(data_ps2==0)num<=num+1
47、39;b1;</p><p> else num<=4'd0;//起始位檢測(cè)</p><p><b> end</b></p><p> 4'd1: begin</p><p> num<=num+1'b1;</p><p> temp_data[0]
48、<=data_ps2;//bit0</p><p><b> end</b></p><p> 4'd2: begin</p><p> num<=num+1'b1;</p><p> temp_data[1]<=data_ps2;//bit1</p><p&
49、gt;<b> end</b></p><p> 4'd3: begin</p><p> num<=num+1'b1;</p><p> temp_data[2]<=data_ps2;//bit2</p><p><b> end</b></p>
50、<p> 4'd4: begin</p><p> num<=num+1'b1;</p><p> temp_data[3]<=data_ps2;//bit3</p><p><b> end</b></p><p> 4'd5: begin</p>
51、<p> num<=num+1'b1;</p><p> temp_data[4]<=data_ps2;//bit4</p><p><b> end</b></p><p> 4'd6: begin</p><p> num<=num+1'b1;</
52、p><p> temp_data[5]<=data_ps2;//bit5</p><p><b> end</b></p><p> 4'd7: begin</p><p> num<=num+1'b1;</p><p> temp_data[6]<=dat
53、a_ps2;//bit6</p><p><b> end</b></p><p> 4'd8: begin</p><p> num<=num+1'b1;</p><p> temp_data[7]<=data_ps2;//bit7</p><p><b
54、> end</b></p><p> 4'd9: begin</p><p> num<=num+1'b1;//奇偶校驗(yàn)位,不作處理</p><p><b> end</b></p><p> 4'd10: begin</p><p>
55、num<=4'd0;//num清零</p><p><b> end</b></p><p><b> default;</b></p><p><b> endcase</b></p><p><b> end</b></p&
56、gt;<p><b> end</b></p><p> always @(posedge clk or negedge rst) begin//數(shù)據(jù)判斷與鎖存</p><p> if(!rst) begin</p><p> key_f0<=1'b0;</p><p> temp&
57、lt;=8'd0;</p><p><b> end</b></p><p> else if(num==4'd10) begin//剛傳送完一個(gè)字節(jié)數(shù)據(jù)</p><p> if(temp_data==8'hf0) begin//有鍵放開,斷碼出現(xiàn)</p><p> key_f0<=
58、1'b1;</p><p> back<=1'b0;//清空位置低</p><p><b> end</b></p><p><b> else</b></p><p><b> begin</b></p><p> if
59、(temp_data==8'd102) begin//返回</p><p> back<=1'b1;//清空位置高</p><p><b> end</b></p><p> else begin</p><p> key_f0<=1'b0;</p><p&
60、gt; temp<=temp_data;//鎖存當(dāng)前鍵值</p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p&g
61、t;<p> always @(posedge key_f0 or negedge rst) begin</p><p> if(!rst) begin</p><p> data<=4'd0;</p><p><b> end</b></p><p> else begin<
62、/p><p> case(temp)//鍵值轉(zhuǎn)換為BCD碼</p><p> 8'd69:data<=4'h0;</p><p> 8'd22:data<=4'h1;</p><p> 8'd30:data<=4'h2;</p><p> 8
63、9;d38:data<=4'h3;</p><p> 8'd37:data<=4'h4;</p><p> 8'd46:data<=4'h5;</p><p> 8'd54:data<=4'h6;</p><p> 8'd61:data<=4
64、'h7;</p><p> 8'd62:data<=4'h8;</p><p> 8'd70:data<=4'h9;</p><p> 8'd28:data<=4'ha;</p><p> 8'd50:data<=4'hb;</p&g
65、t;<p> 8'd33:data<=4'hc;</p><p> 8'd35:data<=4'hd;</p><p> 8'd36:data<=4'he;</p><p> 8'd43:data<=4'hf;</p><p><
66、;b> default:;</b></p><p><b> endcase</b></p><p><b> end</b></p><p><b> end</b></p><p> assign change=~key_f0;//取反確保正確賦
67、值時(shí)鐘</p><p><b> endmodule</b></p><p><b> 數(shù)碼管顯示模塊:</b></p><p> module Nixietube_display</p><p> (clk,rst,data,dataout,ledcom,change,back);<
68、/p><p> input clk;</p><p> input rst;</p><p> input change;</p><p> input[3:0] data;</p><p> input back;</p><p> output[7:0] dataout;</p
69、><p> output[3:0] ledcom;</p><p> reg[3:0] ledcom;</p><p> reg[1:0] comclk;</p><p> reg[3:0] bcd_led;</p><p> reg[7:0] dataout;</p><p> reg
70、[15:0] datareg;</p><p> reg[10:0] c;</p><p> reg clkin;</p><p> always @(posedge change or negedge rst or posedge back) begin//數(shù)據(jù)接收</p><p><b> if(!rst)</b&
71、gt;</p><p> datareg<=16'b0;</p><p> else if(back)</p><p> datareg<={16'b0};</p><p><b> else</b></p><p> datareg<={datareg
72、[11:0],data};//{datareg[11:8],datareg[7:4],datareg[3:0],data};</p><p><b> end </b></p><p> always @(posedge clk) begin//分頻</p><p> if(c<11'd2000)</p>&l
73、t;p> c<=c+11'd1;</p><p> else begin</p><p><b> c<=11'd0;</b></p><p> clkin=~clkin;</p><p><b> end</b></p><p>
74、<b> end</b></p><p> always @(posedge clkin or negedge rst) begin//位選信號(hào)</p><p><b> if(!rst)</b></p><p> comclk<=2'b0;</p><p> else be
75、gin</p><p> if(comclk==2'b11) begin</p><p> comclk<=2'b0;</p><p><b> end</b></p><p> else begin</p><p> comclk<=comclk+2'
76、;b01;</p><p><b> end</b></p><p><b> end</b></p><p><b> end</b></p><p> always @(comclk) begin//位選</p><p> if(comcl
77、k==2'b00)ledcom<=4'b1110;</p><p> else if (comclk==2'b01)ledcom<=4'b1101;</p><p> else if (comclk==2'b10)ledcom<=4'b1011;</p><p> else ledcom<
78、=4'b0111;</p><p><b> end</b></p><p> always @(comclk) begin//數(shù)據(jù)選擇</p><p> if(comclk==2'b00)bcd_led<=datareg[3:0];</p><p> else if (comclk==2&
79、#39;b01)bcd_led<=datareg[7:4];</p><p> else if (comclk==2'b10)bcd_led<=datareg[11:8];</p><p> else bcd_led<=datareg[15:12];</p><p><b> end</b></p>
80、<p> always @(bcd_led or rst) begin//譯碼</p><p> if(!rst) begin</p><p> dataout<=8'hff;</p><p><b> end</b></p><p> else begin</p>
81、<p> case(bcd_led)</p><p> 4'b0000:dataout<=8'b11000000;//0</p><p> 4'b0001:dataout<=8'b11111001;//1</p><p> 4'b0010:dataout<=8'b10100100;/
82、/2</p><p> 4'b0011:dataout<=8'b10110000;//3</p><p> 4'b0100:dataout<=8'b10011001;//4</p><p> 4'b0101:dataout<=8'b10010010;//5</p><p>
83、; 4'b0110:dataout<=8'b10000011;//6</p><p> 4'b0111:dataout<=8'b11111000;//7</p><p> 4'b1000:dataout<=8'b10000000;//8</p><p> 4'b1001:dataout
84、<=8'b10011000;//9</p><p> 4'b1010:dataout<=8'b10001000;//a</p><p> 4'b1011:dataout<=8'b10000011;//b</p><p> 4'b1100:dataout<=8'b10100111;/
85、/c</p><p> 4'b1101:dataout<=8'b10100001;//d</p><p> 4'b1110:dataout<=8'b10000110;//e</p><p> 4'b1111:dataout<=8'b10001110;//f</p><p>
86、; default:dataout<=8'b11111111;</p><p><b> endcase</b></p><p><b> end</b></p><p><b> end</b></p><p><b> endmodule&
87、lt;/b></p><p><b> 頂層文件:</b></p><p> module top(clk,ps2_clk,rst,data_ps2,dataout,ledcom);</p><p> input clk,rst,ps2_clk,data_ps2;</p><p> output[7:0]d
88、ataout;</p><p> output [3:0] ledcom;</p><p> wire [3:0] data;</p><p> wire change,back;</p><p> ps2_data_takein u1(</p><p> .rst(rst),</p><
89、p> .clk(clk),</p><p> .ps2_clk(ps2_clk),</p><p> .data_ps2(data_ps2),</p><p> .data(data),</p><p> .change(change),</p><p> .back(back)</p>
90、<p><b> );</b></p><p> Nixietube_display u2(</p><p> .clk(clk),</p><p> .rst(rst),</p><p> .data(data),</p><p> .dataout(dataout),&
91、lt;/p><p> .ledcom(ledcom),</p><p> .change(change),</p><p> .back(back)</p><p><b> ); </b></p><p><b> endmodule</b></p>&
92、lt;p><b> 第三章 心得體會(huì)</b></p><p> 通過此次課程設(shè)計(jì),使我更加扎實(shí)的掌握了有verilog語言方面的知識(shí),在設(shè)計(jì)過程中雖然遇到了一些問題,但經(jīng)過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識(shí)欠缺和經(jīng)驗(yàn)不足。實(shí)踐出真知,通過親自動(dòng)手制作,使我們掌握的知識(shí)不再是紙上談兵。過而能改,善莫大焉。在課程設(shè)計(jì)過程中,我們不斷發(fā)
93、現(xiàn)錯(cuò)誤,不斷改正,不斷領(lǐng)悟,不斷獲取。最終的硬件檢測(cè)環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設(shè)計(jì)終于順利完成了,在設(shè)計(jì)中遇到了很多問題,最后在老師的指導(dǎo)下,終于迎刃而解。在今后社會(huì)的發(fā)展和學(xué)習(xí)實(shí)踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進(jìn)行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠(yuǎn)不可能收獲成功,收獲喜悅,也永遠(yuǎn)不可能得
94、到社會(huì)及他人對(duì)你的認(rèn)可! 課程設(shè)計(jì)誠(chéng)然是一門專業(yè)課,給我很多專業(yè)知識(shí)以及專業(yè)技能上的提升,同時(shí)又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時(shí),設(shè)計(jì)讓我感觸很深。使我對(duì)抽象的理論有了具體的認(rèn)識(shí)。通過這次課</p><p> 我認(rèn)為,在此次課設(shè)中,我們學(xué)會(huì)了很多學(xué)習(xí)的方法。而這是日后最實(shí)用的,真的是受益匪淺。要面對(duì)社會(huì)的挑戰(zhàn),只有不斷的學(xué)習(xí)、實(shí)踐,再學(xué)習(xí)、再實(shí)踐。這對(duì)于我們的
95、將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。</p><p> 回顧起此課程設(shè)計(jì),至今我仍感慨頗多,從理論到實(shí)踐,在這段日子里,可以說得是苦多于甜,但是可以學(xué)到很多很多的東西,同時(shí)不僅可以鞏固了以前所學(xué)過的知識(shí),而且學(xué)到了很多在書本上所沒有學(xué)到過的知識(shí)。通過這次課程設(shè)計(jì)使我懂得了理論與實(shí)際相結(jié)合是很重要的,只有理論知識(shí)是遠(yuǎn)遠(yuǎn)不夠的,只有把所學(xué)的理論知識(shí)與實(shí)踐相
96、結(jié)合起來,從理論中得出結(jié)論,才能真正為社會(huì)服務(wù),從而提高自己的實(shí)際動(dòng)手能力和獨(dú)立思考的能力。在設(shè)計(jì)的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。 實(shí)驗(yàn)過程中,也對(duì)團(tuán)隊(duì)精神的進(jìn)行了考察,讓我們?cè)诤献髌饋砀幽?,在成功后一起體會(huì)喜悅的心情。果然是團(tuán)結(jié)就是力量,只有互相之間默契融洽的配合才能換來最終完美的結(jié)果。此次設(shè)計(jì)也讓我明白了思路即出路,有什么不懂不明白的地方要及時(shí)請(qǐng)教或上網(wǎng)查詢,只要認(rèn)真鉆研,動(dòng)腦思考,動(dòng)手實(shí)踐
97、,就沒有弄不懂的知識(shí),收獲頗豐。</p><p><b> 第四章 參考文獻(xiàn)</b></p><p> [1]夏宇聞 編著 《Verilog數(shù)字系統(tǒng)設(shè)計(jì)教程》 北京航空航天大學(xué)出版社</p><p> [2]苗新法,王秀華. PS / 2 鍵盤在嵌入式系統(tǒng)中的應(yīng)用研究[J].蘭州交通大學(xué)學(xué)報(bào)( 自然科學(xué)版), 2007(1).</p
98、><p> [3]劉勇, 王玉晶, 曲斌, 于洋.一種嵌入式 PC非標(biāo)準(zhǔn)鍵盤的設(shè)計(jì)</p><p> [4]梁瑞宇 編寫《FPGA設(shè)計(jì)實(shí)驗(yàn)指導(dǎo)書(Verilog HDL)》</p><p><b> 第五章 附錄</b></p><p><b> 管腳分配圖</b></p>&l
溫馨提示
- 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. 眾賞文庫(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 單片機(jī)課程設(shè)計(jì)---鍵盤接口課程設(shè)計(jì)
- eda課程設(shè)計(jì)--矩陣鍵盤接口設(shè)計(jì)
- diy輕松把鍵盤、鼠標(biāo)ps2接口改造成usb接口
- ps課程設(shè)計(jì)
- 手機(jī)鍵盤課程設(shè)計(jì)
- 課程設(shè)計(jì)--基于fpga的vga圖像漢字顯示及ps2鍵盤控制設(shè)計(jì)與應(yīng)用
- 鍵盤接口設(shè)計(jì)
- 接口課程設(shè)計(jì)
- 鍵盤監(jiān)聽程序課程設(shè)計(jì)
- 微機(jī)原理與接口技術(shù)-8086cpu小鍵盤課程設(shè)計(jì)
- 基于verilog的ps2鍵盤設(shè)計(jì)進(jìn)階
- 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)-鍵盤顯示控制器
- java課程設(shè)計(jì)--軟鍵盤
- 微機(jī)接口課程設(shè)計(jì)
- 接口課程設(shè)計(jì)報(bào)告
- 接口課程設(shè)計(jì)報(bào)告
- 軟鍵盤系統(tǒng)課程設(shè)計(jì)
- 鍵盤電子樂器課程設(shè)計(jì)
- 鍵盤測(cè)試器的設(shè)計(jì)課程設(shè)計(jì)
- 鍵盤及顯示接口設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論