久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2644|回復: 0
打印 上一主題 下一主題
收起左側

Tablet counting system verilog code

[復制鏈接]
跳轉到指定樓層
樓主
Hex keypad or tablet counting system


源程序如下:
  1. //##################################################################
  2. /*
  3. Project/Module        : Assignment
  4. File name        : HexKeyCodeGenerator.v
  5. Version                : 1-0
  6. Date created        : 25 Aug 2017
  7. Author                : Vimalraj Kasivisvanathan
  8. Code type        : Verilog
  9. Description        : Verilog code for HexKeypad
  10. */
  11. //##################################################################

  12. //`default_nettype none

  13. module HEXKEY
  14. #(parameter [3:0]
  15. PRESSKEY = 4'b0001,
  16. KEYCOL0 = 4'b0010,
  17. KEYCOL1 = 4'b0011,
  18. KEYCOL2 = 4'b0100,
  19. KEYCOL3 = 4'b0101,
  20. //DELAY1 = 4'b0110,
  21. //DELAY2 = 4'b0111,
  22. KEYVALID = 4'b1000,
  23. KEYRELEASE = 4'b1001,
  24. KEYERROR = 4'b1010)
  25. (input        b_ip_hex_sys_clock,
  26. input        b_ip_hex_sys_reset,
  27. input        b_ip_hex_clear,
  28. input [3:0] b_ip_hex_keypad_row
  29. output reg [3:0] b_op_hex_keycode,
  30. output reg              b_op_hex_valid_code,
  31. output reg [3:0]  b_op_hex_keypad_column,
  32. );

  33. reg [3:0] current,next,row;

  34. //***********************************************************

  35. ///////////////FIRST//////////////////////////////////////
  36. always @(posedge b_ip_hex_sys_clock) begin: BGN
  37. if (b_ip_hex_sys_reset || b_ip_hex_clear) current <= PRESSKEY;
  38. else                                         current <= next;
  39. end
  40. //////////////////////////////////////////////////////////


  41. ///////////////////////CURRENTSTATE/////////////////////////
  42. always @(b_ip_hex_keypad_row || current)begin: NSL
  43.         case(current)
  44.        
  45.                 PRESSKEY:
  46.                         if ((|b_ip_hex_keypad_row))  next <= KEYCOL0;
  47.                         else                            next <= PRESSKEY;
  48.                
  49.                 KEYCOL0:
  50.                         if ((|b_ip_hex_keypad_row))  next = KEYVALID;
  51.                         else if ((!(|b_ip_hex_keypad_row)) && b_op_hex_keypad_column == 4'b0001) next = KEYCOL1;  
  52.        
  53.        
  54.                 KEYCOL1:
  55.                         if ((|b_ip_hex_keypad_row))  next = KEYVALID;
  56.                         else if ((!(|b_ip_hex_keypad_row)) && b_op_hex_keypad_column == 4'b0010) next = KEYCOL2;


  57.                 KEYCOL2:
  58.                         if ((|b_ip_hex_keypad_row))  next = KEYVALID;
  59.                         else if ((!(|b_ip_hex_keypad_row)) && b_op_hex_keypad_column == 4'b0100) next = KEYCOL3;


  60.                 KEYCOL3:
  61.                         if ((|b_ip_hex_keypad_row))          next = KEYVALID;
  62.                         else if (!(b_ip_hex_keypad_row)) next = KEYERROR;
  63.                         else                                 next = 4'bx;



  64.                 KEYVALID:
  65.                         next = KEYRELEASE;


  66.                 KEYRELEASE:
  67.                         if (!(|b_ip_hex_keypad_row)) next = PRESSKEY;
  68.                         else                            next = KEYRELEASE;


  69.                 KEYERROR:
  70.                         next = PRESSKEY;
  71.                

  72.                 default:
  73.                         next = 4'bx;
  74.         endcase
  75. end


  76. /////////////////////NEXTSTATE LOGIC///////////////////////////////////////////////

  77. always @(posedge b_ip_hex_sys_clock)begin: ROL
  78.     if (b_ip_hex_sys_reset || b_ip_hex_clear)begin
  79.         b_op_hex_keypad_column <= 4'b1111;
  80.         b_op_hex_valid_code    <= 1'b0;
  81.         b_op_hex_keycode       <= 4'b0000;
  82.         row                       <= 4'b0000;
  83. end
  84. else begin

  85.         case(next)

  86.                 PRESSKEY:begin
  87.                         b_op_hex_keypad_column <= 4'b1111;
  88.                         b_op_hex_valid_code    <= 1'b0;
  89.                         b_op_hex_keycode       <= 4'b0000;
  90.                         row                       <= 4'b0000;
  91.                         end
  92.                
  93.                 KEYCOL0:begin
  94.                         b_op_hex_keypad_column <= 4'b0001;
  95.                         b_op_hex_valid_code    <= 1'b0;
  96.                         row                       <= b_ip_hex_keypad_row;
  97.                                 if (row == 4'b0001) b_op_hex_keycode <= 4'b0000;
  98.                                 else if (row == 4'b0010) b_op_hex_keycode <= 4'b0100;
  99.                                 else if (row == 4'b0100) b_op_hex_keycode <= 4'b1000;
  100.                                 else if(row == 4'b1000) b_op_hex_keycode <= 4'b1100;
  101.                         end

  102.                 KEYCOL1:begin
  103.                         b_op_hex_keypad_column <= 4'b0010;
  104.                         b_op_hex_valid_code    <= 1'b0;
  105.                         row                       <= row;
  106.                                 if (row == 4'b0001) b_op_hex_keycode <= 4'b0001;
  107.                                 else if (row == 4'b0010) b_op_hex_keycode <= 4'b0101;
  108.                                 else if (row == 4'b0100) b_op_hex_keycode <= 4'b1001;
  109.                                 else if(row == 4'b1000) b_op_hex_keycode <= 4'b1101;
  110.                         end

  111.                 KEYCOL2:begin
  112.                         b_op_hex_keypad_column <= 4'b0100;
  113.                         b_op_hex_valid_code    <= 1'b0;
  114.                         row                       <= row;
  115.                                 if (row == 4'b0001) b_op_hex_keycode <= 4'b0010;
  116.                                 else if (row == 4'b0010) b_op_hex_keycode <= 4'b0110;
  117.                                 else if (row == 4'b0100) b_op_hex_keycode <= 4'b1010;
  118.                                 else if(row == 4'b1000) b_op_hex_keycode <= 4'b1110;
  119.                         end

  120.                 KEYCOL3:begin
  121.                         b_op_hex_keypad_column <= 4'b1000;
  122.                         b_op_hex_valid_code    <= 1'b0;
  123.                         row                       <= row;
  124.                                 if (row == 4'b0001) b_op_hex_keycode <= 4'b0011;
  125.                                 else if (row == 4'b0010) b_op_hex_keycode <= 4'b0111;
  126.                                 else if (row == 4'b0100) b_op_hex_keycode <= 4'b1011;
  127.                                 else if(row == 4'b1000) b_op_hex_keycode <= 4'b1111;
  128.                         end

  129.                 KEYRELEASE:begin
  130.                         b_op_hex_keypad_column <= 4'b1111;
  131.                         b_op_hex_valid_code    <= 1'b0;
  132.                         b_op_hex_keycode       <= b_op_hex_keycode;
  133.                         end

  134. ……………………

  135. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:
HexKeypad.rar (72.42 KB, 下載次數: 6)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美国产精品久久 | 亚洲香蕉在线视频 | 日本超碰 | 99精品视频免费观看 | 青青久视频 | 亚洲精品久久久久久下一站 | 色婷婷精品久久二区二区蜜臂av | 精品一区二区三区四区五区 | 成人欧美一区二区三区黑人孕妇 | 麻豆久久久久 | 日韩蜜桃视频 | 日韩中文字幕一区二区三区 | 精品国产一区二区三区在线观看 | 色姑娘综合网 | 国产99热在线 | 亚洲视频一区二区三区 | 91精品国产自产精品男人的天堂 | 欧洲色 | 国产精品一区二区三区久久 | 免费激情网站 | 成人免费视屏 | 午夜激情视频 | 精品国产一区二区国模嫣然 | 国产精品av久久久久久毛片 | 亚洲va欧美va天堂v国产综合 | 久久精品中文 | 日韩欧美三区 | 美女视频三区 | 四色永久 | 亚洲精品国产成人 | 一区二区三区四区视频 | 91最新在线视频 | av国产精品 | 在线91 | 亚洲一区二区三区在线视频 | 国产馆 | 中文字幕电影在线观看 | 国产免费高清 | 91毛片在线看 | 在线欧美亚洲 | 国产欧美在线观看 |