hdl-ps2接口鍵盤課程設計_第1頁
已閱讀1頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、<p><b>  課程設計報告</b></p><p>  題 目 HDL項目設計 </p><p><b>  摘要:</b></p><p>  鍵盤是最常用人機接口設備之一,在嵌入式系統(tǒng)中有著相當廣泛的應用。一般自行設計的簡易矩陣鍵盤僅僅是按行、列排列起來的矩陣開關。當需要較多的按鍵時,則會

2、占用較多的I/O 端口,在軟件上則要進行上電復位按鍵掃描及通信處理,而且還要加上按鍵的去抖動處理,增大了軟硬件開銷。而PS/2 鍵盤,內嵌自動去除按鍵抖動設計,自動地識別鍵的按下與釋放,軟硬件開發(fā)簡便,價格便宜,穩(wěn)定可靠,將PS/2 鍵盤作為嵌入式系統(tǒng)的輸入設備已經成為可行的方案。</p><p>  本設計是以現(xiàn)場可編程邏輯器件(FPGA)為核心的PS/2接口鍵盤的輸入識別電路。利用QuartusⅡ軟件編寫ve

3、rilog HDL硬件描述語言程序以實現(xiàn)鍵盤部分簡單鍵值的識別與輸出。本設計主要以程序為核心,硬件電路的搭建使用FPGA實驗箱,將程序頂層文件里定義的輸入輸出端口與實驗箱管腳進行相應的配置,除實驗箱上的reset鍵以外,外設是一個與實驗箱通過PS/2接口相連的鍵盤。當系統(tǒng)上電后,實驗箱上的數碼管可以依次顯示從鍵盤上輸入的鍵值,并具有數碼管清零功能。</p><p><b>  關鍵詞:</b>

4、;</p><p>  Ps/2接口鍵盤、輸入識別、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)設計 5</p><p>  1.1設計目標

11、 5</p><p>  1.2方案對比與確定 5</p><p>  1.3總體設計框圖及說明 6</p><p>  1.3.1 總體設計框圖

12、 6</p><p>  1.3.2總體設計端口說明 6</p><p>  1.4模塊電路設計及說明 7</p><p>  1.4.1鍵盤數據接收部分

13、 7</p><p>  1.4.2數碼管顯示部分 8</p><p>  二.結果與討論 9</p><p>  2.1調試步驟 9</p&

14、gt;<p>  2.2調試現(xiàn)象 9</p><p>  2.3問題與分析 9</p><p>  三.軟件設計 10</p>&l

15、t;p>  3.1程序流程圖 10</p><p>  3.2程序設計 11</p><p>  四.心得體會 17</p><p>

16、;  五.參考文獻 17</p><p>  六.附錄 18</p><p><b>  第一章  系統(tǒng)設計</b></p><p>  1.1   

17、0;       系統(tǒng)設計目標</p><p> ?。?)以通用的PS2鍵盤為輸入,設計一個能夠識別PS2鍵盤輸入編碼的電路,并把鍵值通過數碼管顯示;</p><p> ?。?)至少能夠識別0~9的數字鍵。</p><p>  1.2 方案對比分析與確定</p><p>

18、<b>  方案一:</b></p><p>  使用現(xiàn)場可編程邏輯器件(FPGA)制作,利用Verilog HDL硬件描述語言編程進行控制,然后下載至實驗箱實現(xiàn)。利用QuartusⅡ軟件編寫verilog HDL硬件描述語言程序以實現(xiàn)鍵盤部分簡單鍵值的識別與輸出。硬件電路的搭建使用FPGA實驗箱,將程序頂層文件里定義的輸入輸出端口與實驗箱管腳進行相應的配置,除實驗箱上的reset鍵以外,外

19、設是一個與實驗箱通過PS/2接口相連的鍵盤。</p><p><b>  方案二:</b></p><p>  采用單片機來實現(xiàn)鍵盤識別,它的原理方框圖與用FPGA來實現(xiàn)的原理方框圖類似,它由控制輸入電路(及鍵盤)、C51單片機、數碼管組成。兩者基本原理都相同,唯一不同的是一個是用單片機來實現(xiàn),一個是用FPGA來制作。采用單片機來實現(xiàn)PS/2接口鍵盤的輸入識別電路,主

20、要的核心是單片機程序的設計。</p><p><b>  方案比較:</b></p><p>  兩個方案均可以實現(xiàn)PS/2接口鍵盤的輸入識別電路的設計。第一個方案采用的是現(xiàn)場可編程邏輯器件來實現(xiàn), 它的優(yōu)點是所有電路集成在一塊板子上,無需外圍連線,此方案所需的外圍電路簡單,這樣它的體積就減少了,同時還提高了系統(tǒng)的穩(wěn)定度。還可以用軟件QuartusⅡ軟件進行

21、仿真和調試等??梢猿浞掷肏DL硬件描述語言方便的編程,提高開發(fā)效率,縮短研發(fā)周期,降低研發(fā)成本;而且易于進行功能的擴展,實現(xiàn)方法靈活,調試方便,修改容易.第二個方案有它的優(yōu)點,但同時也存在缺點。第二個方案中采用的是單片機來制作, 對設計者的要求比較高,設計者對軟硬件必須十分熟悉。和方案一來比它的實驗仿真沒有方案一簡單直觀,調試也有一定的難度。在外界環(huán)境相同的條件下,方案二設計出來的產品精度和穩(wěn)定度要比方案一稍微差一些。因此, PS/2

22、接口鍵盤的輸入識別電路的設計我們選擇方案一來實現(xiàn)。</p><p>  1.3   總體設計框圖及說明</p><p>  1.31 總體設計框圖:</p><p>  1.31總體設計的端口說明:</p><p>  設計分為兩部分。分別為鍵盤數據接收部分、數碼管顯示部分。</p><p>  

23、輸入端:時鐘clk為系統(tǒng)時鐘。rst為復位按鍵低電平有效,clock和data_ps2為鍵盤的時鐘端和數據端。</p><p>  中間連線:data[3:0]為四位數據輸出(已轉化為十六進制),change為按鍵放開信號,back為Backspace按鍵信號。</p><p>  輸出端:dataout[7:0]為數碼管數據端,led_com[3:0]為數碼管位選。</p>

24、<p>  1.4 模塊電路設計及說明</p><p>  1.41鍵盤數據接收部分</p><p>  鍵盤PS/2的接口簡介:</p><p>  接口的六個腳中,只有四個腳有意義,分別是:時鐘腳、數據腳、電源腳、電源地。其余為保留腳。PS/2靠系統(tǒng)的PS/2端口提供+5V電源。這里需要用到的即是:時鐘腳和數據腳。這兩個腳都是集電極開路,所以必須接

25、大阻值的上拉電阻。他們平時保持高電平,有輸出時才被拉到低電平,之后自動上浮到高電平。</p><p>  PS/2設備的clock和data平時都是高電平。當設備等待發(fā)送數據時,它首先檢查clock是否為高。如果為低,則認為PC抑制了通訊,此時它緩沖數據知道獲得總線的控制權。如果clock為高電平,PS/2設備則開始向PC發(fā)送數據。一般都是PS/2設備產生市中心阿紅。發(fā)送按幀格式。數據位在clock為高電平時準備

26、好,在clock下降沿被PC讀入。</p><p>  數據從鍵盤/鼠標發(fā)送到主機或從主機發(fā)送到鍵盤/鼠標,時鐘都是PS/2設備產生,主機對時鐘控制有優(yōu)先權,即主機想發(fā)送控制指令給PS/2設備時,可以拉低時鐘線至少100us。然后再下拉數據線,最后釋放時鐘線為高。PS/2設備的時鐘線和數據線都是集電極開路的,容易實現(xiàn)拉低電平。</p><p>  其數據發(fā)送時序如下:</p>

27、<p><b>  鍵盤發(fā)送時序</b></p><p><b>  鍵盤接收時序</b></p><p>  因為我們的功能只涉及到鍵盤的數據發(fā)送,所以對接收不做具體說明。</p><p>  現(xiàn)在的PC機使用的PS/2鍵盤都默認采用第二套掃描碼集,掃描碼有兩種不同的類型:通碼和斷碼。當一個鍵被按下或持續(xù)按住

28、時,鍵盤會將改鍵的通碼發(fā)送給主機;而當一個鍵被釋放時,鍵盤會將該鍵的斷碼發(fā)送給主機。</p><p>  我們做的比較簡單,因此只用到了第一類按鍵。(返回值見附錄)</p><p>  第一類按鍵:通碼為1字節(jié),斷碼為0xF0+通碼形式。如1鍵,其通碼為0x16,斷碼為0xF0 0x1C.</p><p>  在具體的實驗過程中,PS/2鍵盤通過Clock管腳來控制

29、通信方向并且充當本次實驗的一個時鐘管腳,在鍵盤時鐘下,數據段進行收發(fā)數據,本次實驗只是使用它來發(fā)送數據,未設計鍵盤接收數據。每按下一個鍵,data管腳發(fā)送一個數據幀,具體格式如下:</p><p><b>  PS/2鍵盤掃描碼</b></p><p><b>  此模塊的功能說明:</b></p><p>  當按下一個

30、鍵時,F(xiàn)PGA在時鐘信號下接受來自PS/2鍵盤的數據(8個數據位),接收完畢后鎖存并轉化為十六進制數據,例如4’ha。當按鍵放開時,發(fā)出信號change。這時開始識別按鍵,如果接收到8’d102,則表示接收到按鍵Backspace,則清空顯示數據。否則,數碼管進行譯碼后則顯示鍵盤的鍵值。</p><p>  總體來說,此部分分為接收數據模塊、數據判斷與鎖存模塊、鍵值轉化模塊。</p><p&g

31、t;  1.4.2數碼管顯示部分</p><p><b>  此模塊的功能說明:</b></p><p>  這部分內容較簡單,由于已經得到了鍵盤信息,在接收到change信號后,且十六進制數據不是8’d102時(即不是Backspace清零信號),則根據數字對應的通碼反過來找數字,經過8段數碼管的譯碼后顯示鍵盤鍵值。</p><p>  可顯

32、示的鍵值有:0~9,a~f。</p><p>  此部分總體分為數據接收模塊、分頻模塊、位選信號模塊、譯碼模塊。之所以有分頻主要是為了提供數碼管動態(tài)掃描的掃描頻率,頻率要適中。否則數碼管不能正常工作。</p><p>  第二章  實驗結果與討論</p><p><b>  2.1調試步驟</b></p>&l

33、t;p>  1、運行Quartus II軟件,新建工程和命名頂層文件。</p><p>  2、建立3個文本文件Verilog HDL File。分別為ps2_data_takein.v , Nixietube_display.v , top.v 。在文件中寫入程序。保存,編譯。</p><p>  3、分配管腳。保存,編譯。</p><p>  4

34、、先下載簡單的程序,已確定實驗箱可用。</p><p>  5、之后將生成的.sof文件下載至FPGA實驗箱中。</p><p>  6、在鍵盤上一次輸入0~9,a~f。觀察數碼管顯示的數據是否與鍵盤的輸入鍵值相同。</p><p>  7、若不相同或不完全相同,則分模塊調試。</p><p><b>  2.2調試現(xiàn)象</b

35、></p><p>  1、分別輸入0~9和a~f,數碼管上均能正確顯示</p><p>  2、輸入Backspace,則清空數碼管上的數據。</p><p>  3、輸入其他的鍵值,數碼管不顯示。</p><p><b>  2.3問題分析</b></p><p>  調試過程中出現(xiàn)的問

36、題分析:</p><p>  生成不了.sof文件,編譯錯誤。 分析:工程名、頂層文件名、模塊名的關系未理清。當初建工程時所寫的頂層文件必須與后面的建立的頂層文件同名。</p><p>  數碼管顯示不穩(wěn)定; 分析:掃描頻率沒選定正確。</p><p>  3.   數碼管顯示不正確;

37、 分析:管腳配置不正確導致數碼管顯示異常。</p><p>  4.  重新分配管腳后,結果未變; 分析:重新配置管腳后,未運行程序,使得下載進去的仍為原先的程序。</p><p><b>  第三章 軟件設計</b></p><p><b>  3.1程序流程圖:</b></p>

38、;<p><b>  3.2程序設計</b></p><p><b>  鍵盤數據接收模塊:</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;//讀數信號</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;//松鍵標志,置1表示接收到8‘hf0,再接收到下一個數據后清零</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//接收數據模塊</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//檢測到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;//起始位檢測</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;//奇偶校驗位,不作處理</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//數據判斷與鎖存</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//剛傳送完一個字節(jié)數據</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;//鎖存當前鍵值</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)//鍵值轉換為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、值時鐘</p><p><b>  endmodule</b></p><p><b>  數碼管顯示模塊:</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//數據接收</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//位選信號</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//數據選擇</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>  第三章 心得體會</b></p><p>  通過此次課程設計,使我更加扎實的掌握了有verilog語言方面的知識,在設計過程中雖然遇到了一些問題,但經過一次又一次的思考,一遍又一遍的檢查終于找出了原因所在,也暴露出了前期我在這方面的知識欠缺和經驗不足。實踐出真知,通過親自動手制作,使我們掌握的知識不再是紙上談兵。過而能改,善莫大焉。在課程設計過程中,我們不斷發(fā)

93、現(xiàn)錯誤,不斷改正,不斷領悟,不斷獲取。最終的硬件檢測環(huán)節(jié),本身就是在踐行“過而能改,善莫大焉”的知行觀。這次課程設計終于順利完成了,在設計中遇到了很多問題,最后在老師的指導下,終于迎刃而解。在今后社會的發(fā)展和學習實踐過程中,一定要不懈努力,不能遇到問題就想到要退縮,一定要不厭其煩的發(fā)現(xiàn)問題所在,然后一一進行解決,只有這樣,才能成功的做成想做的事,才能在今后的道路上劈荊斬棘,而不是知難而退,那樣永遠不可能收獲成功,收獲喜悅,也永遠不可能得

94、到社會及他人對你的認可! 課程設計誠然是一門專業(yè)課,給我很多專業(yè)知識以及專業(yè)技能上的提升,同時又是一門講道課,一門辯思課,給了我許多道,給了我很多思,給了我莫大的空間。同時,設計讓我感觸很深。使我對抽象的理論有了具體的認識。通過這次課</p><p>  我認為,在此次課設中,我們學會了很多學習的方法。而這是日后最實用的,真的是受益匪淺。要面對社會的挑戰(zhàn),只有不斷的學習、實踐,再學習、再實踐。這對于我們的

95、將來也有很大的幫助。以后,不管有多苦,我想我們都能變苦為樂,找尋有趣的事情,發(fā)現(xiàn)其中珍貴的事情。</p><p>  回顧起此課程設計,至今我仍感慨頗多,從理論到實踐,在這段日子里,可以說得是苦多于甜,但是可以學到很多很多的東西,同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。通過這次課程設計使我懂得了理論與實際相結合是很重要的,只有理論知識是遠遠不夠的,只有把所學的理論知識與實踐相

96、結合起來,從理論中得出結論,才能真正為社會服務,從而提高自己的實際動手能力和獨立思考的能力。在設計的過程中遇到問題,可以說得是困難重重,但可喜的是最終都得到了解決。 實驗過程中,也對團隊精神的進行了考察,讓我們在合作起來更加默契,在成功后一起體會喜悅的心情。果然是團結就是力量,只有互相之間默契融洽的配合才能換來最終完美的結果。此次設計也讓我明白了思路即出路,有什么不懂不明白的地方要及時請教或上網查詢,只要認真鉆研,動腦思考,動手實踐

97、,就沒有弄不懂的知識,收獲頗豐。</p><p><b>  第四章 參考文獻</b></p><p>  [1]夏宇聞 編著 《Verilog數字系統(tǒng)設計教程》 北京航空航天大學出版社</p><p>  [2]苗新法,王秀華. PS / 2 鍵盤在嵌入式系統(tǒng)中的應用研究[J].蘭州交通大學學報( 自然科學版), 2007(1).</p

98、><p>  [3]劉勇, 王玉晶, 曲斌, 于洋.一種嵌入式 PC非標準鍵盤的設計</p><p>  [4]梁瑞宇 編寫《FPGA設計實驗指導書(Verilog HDL)》</p><p><b>  第五章 附錄</b></p><p><b>  管腳分配圖</b></p>&l

溫馨提示

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

評論

0/150

提交評論