亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ps2_keyboard.v

?? ps2 keyboard verilog源代碼,支持ascii碼.掃描碼輸出,擴(kuò)展鍵輸出,按下及釋放信息輸出
?? V
?? 第 1 頁 / 共 2 頁
字號:
    default : m1_next_state <= m1_rx_clk_h;  endcaseend// State registeralways @(posedge clk)begin : m2_state_register  if (reset) m2_state <= m2_rx_data_ready_ack;  else m2_state <= m2_next_state;end// State transition logicalways @(m2_state or rx_output_strobe or rx_read)begin : m2_state_logic  case (m2_state)    m2_rx_data_ready_ack:          begin            rx_data_ready <= 1'b0;            if (rx_output_strobe) m2_next_state <= m2_rx_data_ready;            else m2_next_state <= m2_rx_data_ready_ack;          end    m2_rx_data_ready:          begin            rx_data_ready <= 1'b1;            if (rx_read) m2_next_state <= m2_rx_data_ready_ack;            else m2_next_state <= m2_rx_data_ready;          end    default : m2_next_state <= m2_rx_data_ready_ack;  endcaseend// This is the bit counteralways @(posedge clk)begin  if (   reset || rx_shifting_done || (m1_state == m1_tx_wait_keyboard_ack))       // After tx is done.       bit_count <= 0;  // normal reset  else if (timer_60usec_done && (m1_state == m1_rx_clk_h)&& (ps2_clk_s))       bit_count <= 0;  // rx watchdog timer reset  else if ( (m1_state == m1_rx_falling_edge_marker)   // increment for rx           ||(m1_state == m1_tx_rising_edge_marker)   // increment for tx           )    bit_count <= bit_count + 1;end// 輸入輸出移位妥當(dāng)邏輯assign rx_shifting_done = (bit_count == `TOTAL_BITS);assign tx_shifting_done = (bit_count == `TOTAL_BITS-1);// This is the signal which enables loading of the shift register.// It also indicates "ack" to the device writing to the transmitter.assign tx_write_ack_o = (  (tx_write && (m1_state == m1_rx_clk_h))||(tx_write && (m1_state == m1_rx_clk_l)));// This is the ODD parity bit for the transmitted word.assign tx_parity_bit = ~^tx_data;// This is the shift registeralways @(posedge clk)begin  if (reset) q <= 0;  else if (tx_write_ack_o) q <= {1'b1,tx_parity_bit,tx_data,1'b0};  else if ( (m1_state == m1_rx_falling_edge_marker)           ||(m1_state == m1_tx_rising_edge_marker) )    q <= {ps2_data_s,q[`TOTAL_BITS-1:1]};end// This is the 60usec timer counteralways @(posedge clk)begin  if (~enable_timer_60usec)   	  timer_60usec_count <= 0;  else if (~timer_60usec_done) timer_60usec_count <= timer_60usec_count + 1;endassign timer_60usec_done = (timer_60usec_count == (TIMER_60USEC_VALUE_PP - 1));// This is the 5usec timer counteralways @(posedge clk)begin  if (~enable_timer_5usec) timer_5usec_count <= 0;  else if (~timer_5usec_done) timer_5usec_count <= timer_5usec_count + 1;endassign timer_5usec_done = (timer_5usec_count == TIMER_5USEC_VALUE_PP - 1);// Create the signals which indicate special scan codes received.// These are the "unlatched versions."assign extended = (q[8:1] == `EXTEND_CODE) && rx_shifting_done;assign released = (q[8:1] == `RELEASE_CODE) && rx_shifting_done;// Store the special scan code status bits// Not the final output, but an intermediate storage place,// until the entire set of output data can be assembled.always @(posedge clk)begin  if (reset || rx_output_event)  begin    hold_extended <= 0;    hold_released <= 0;  end  else  begin    if (rx_shifting_done && extended)    	 hold_extended <= 1;    if (rx_shifting_done && released)    	 hold_released <= 1;  endend// 左SHIFT鍵檢測always @(posedge clk)begin  if (reset) left_shift_key <= 0;  else if ((q[8:1] == `LEFT_SHIFT) && rx_shifting_done && ~hold_released)    left_shift_key <= 1;  else if ((q[8:1] == `LEFT_SHIFT) && rx_shifting_done && hold_released)    left_shift_key <= 0;end// 右SHIFT鍵檢測always @(posedge clk)begin  if (reset) right_shift_key <= 0;  else if ((q[8:1] == `RIGHT_SHIFT) && rx_shifting_done && ~hold_released)    right_shift_key <= 1;  else if ((q[8:1] == `RIGHT_SHIFT) && rx_shifting_done && hold_released)    right_shift_key <= 0;endassign rx_shift_key_on = left_shift_key || right_shift_key;// Output the special scan code flags, the scan code and the asciialways @(posedge clk)begin  if (reset)  begin    rx_extended <= 0;    rx_released <= 0;    rx_scan_code <= 0;    rx_ascii <= 0;  end  else if (rx_output_strobe)  begin    rx_extended <= hold_extended;    rx_released <= hold_released;    rx_scan_code <= q[8:1];    rx_ascii <= ascii;  endend// Store the final rx output data only when all extend and release codes// are received and the next (actual key) scan code is also ready.// (the presence of rx_extended or rx_released refers to the// the current latest scan code received, not the previously latched flags.)assign rx_output_event  = (rx_shifting_done                          && ~extended                           && ~released                          );assign rx_output_strobe = (rx_shifting_done                          && ~extended                           && ~released                          && ( (TRAP_SHIFT_KEYS_PP == 0)                                || ( (q[8:1] != `RIGHT_SHIFT)                                    &&(q[8:1] != `LEFT_SHIFT)                                  )                             )                          );// This part translates the scan code into an ASCII value...// Only the ASCII codes which I considered important have been included.// if you want more, just add the appropriate case statement lines...// (You will need to know the keyboard scan codes you wish to assign.)// The entries are listed in ascending order of ASCII value.assign shift_key_plus_code = {3'b0,rx_shift_key_on,q[8:1]};always @(shift_key_plus_code)begin  casez (shift_key_plus_code)    12'h?66 : ascii <= 8'h08;  // Backspace ("backspace" key)    12'h?0d : ascii <= 8'h09;  // Horizontal Tab    12'h?5a : ascii <= 8'h0d;  // Carriage return ("enter" key)    12'h?76 : ascii <= 8'h1b;  // Escape ("esc" key)    12'h?29 : ascii <= 8'h20;  // Space    12'h116 : ascii <= 8'h21;  // !    12'h152 : ascii <= 8'h22;  // "    12'h126 : ascii <= 8'h23;  // #    12'h125 : ascii <= 8'h24;  // $    12'h12e : ascii <= 8'h25;  // %    12'h13d : ascii <= 8'h26;  // &    12'h052 : ascii <= 8'h27;  // '    12'h146 : ascii <= 8'h28;  // (    12'h145 : ascii <= 8'h29;  // )    12'h13e : ascii <= 8'h2a;  // *    12'h155 : ascii <= 8'h2b;  // +    12'h041 : ascii <= 8'h2c;  // ,    12'h04e : ascii <= 8'h2d;  // -    12'h049 : ascii <= 8'h2e;  // .    12'h04a : ascii <= 8'h2f;  // /    12'h045 : ascii <= 8'h30;  // 0    12'h016 : ascii <= 8'h31;  // 1    12'h01e : ascii <= 8'h32;  // 2    12'h026 : ascii <= 8'h33;  // 3    12'h025 : ascii <= 8'h34;  // 4    12'h02e : ascii <= 8'h35;  // 5    12'h036 : ascii <= 8'h36;  // 6    12'h03d : ascii <= 8'h37;  // 7    12'h03e : ascii <= 8'h38;  // 8    12'h046 : ascii <= 8'h39;  // 9    12'h14c : ascii <= 8'h3a;  // :    12'h04c : ascii <= 8'h3b;  // ;    12'h141 : ascii <= 8'h3c;  // <    12'h055 : ascii <= 8'h3d;  // =    12'h149 : ascii <= 8'h3e;  // >    12'h14a : ascii <= 8'h3f;  // ?    12'h11e : ascii <= 8'h40;  // @    12'h11c : ascii <= 8'h41;  // A    12'h132 : ascii <= 8'h42;  // B    12'h121 : ascii <= 8'h43;  // C    12'h123 : ascii <= 8'h44;  // D    12'h124 : ascii <= 8'h45;  // E    12'h12b : ascii <= 8'h46;  // F    12'h134 : ascii <= 8'h47;  // G    12'h133 : ascii <= 8'h48;  // H    12'h143 : ascii <= 8'h49;  // I    12'h13b : ascii <= 8'h4a;  // J    12'h142 : ascii <= 8'h4b;  // K    12'h14b : ascii <= 8'h4c;  // L    12'h13a : ascii <= 8'h4d;  // M    12'h131 : ascii <= 8'h4e;  // N    12'h144 : ascii <= 8'h4f;  // O    12'h14d : ascii <= 8'h50;  // P    12'h115 : ascii <= 8'h51;  // Q    12'h12d : ascii <= 8'h52;  // R    12'h11b : ascii <= 8'h53;  // S    12'h12c : ascii <= 8'h54;  // T    12'h13c : ascii <= 8'h55;  // U    12'h12a : ascii <= 8'h56;  // V    12'h11d : ascii <= 8'h57;  // W    12'h122 : ascii <= 8'h58;  // X    12'h135 : ascii <= 8'h59;  // Y    12'h11a : ascii <= 8'h5a;  // Z    12'h054 : ascii <= 8'h5b;  // [    12'h05d : ascii <= 8'h5c;  // \    12'h05b : ascii <= 8'h5d;  // ]    12'h136 : ascii <= 8'h5e;  // ^    12'h14e : ascii <= 8'h5f;  // _        12'h00e : ascii <= 8'h60;  // `    12'h01c : ascii <= 8'h61;  // a    12'h032 : ascii <= 8'h62;  // b    12'h021 : ascii <= 8'h63;  // c    12'h023 : ascii <= 8'h64;  // d    12'h024 : ascii <= 8'h65;  // e    12'h02b : ascii <= 8'h66;  // f    12'h034 : ascii <= 8'h67;  // g    12'h033 : ascii <= 8'h68;  // h    12'h043 : ascii <= 8'h69;  // i    12'h03b : ascii <= 8'h6a;  // j    12'h042 : ascii <= 8'h6b;  // k    12'h04b : ascii <= 8'h6c;  // l    12'h03a : ascii <= 8'h6d;  // m    12'h031 : ascii <= 8'h6e;  // n    12'h044 : ascii <= 8'h6f;  // o    12'h04d : ascii <= 8'h70;  // p    12'h015 : ascii <= 8'h71;  // q    12'h02d : ascii <= 8'h72;  // r    12'h01b : ascii <= 8'h73;  // s    12'h02c : ascii <= 8'h74;  // t    12'h03c : ascii <= 8'h75;  // u    12'h02a : ascii <= 8'h76;  // v    12'h01d : ascii <= 8'h77;  // w    12'h022 : ascii <= 8'h78;  // x    12'h035 : ascii <= 8'h79;  // y    12'h01a : ascii <= 8'h7a;  // z    12'h154 : ascii <= 8'h7b;  // {    12'h15d : ascii <= 8'h7c;  // |    12'h15b : ascii <= 8'h7d;  // }    12'h10e : ascii <= 8'h7e;  // ~    12'h?71 : ascii <= 8'h7f;  // (Delete OR DEL on numeric keypad)    default : ascii <= 8'h2e;  // '.' used for unlisted characters.  endcaseendendmodule//`undefine TOTAL_BITS//`undefine EXTEND_CODE//`undefine RELEASE_CODE//`undefine LEFT_SHIFT//`undefine RIGHT_SHIFT

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产露脸精彩对白| 亚洲欧洲色图综合| 黄色资源网久久资源365| 精品久久国产老人久久综合| 人人狠狠综合久久亚洲| 91精品欧美福利在线观看| 日韩av中文字幕一区二区三区 | 五月婷婷另类国产| 日韩欧美亚洲一区二区| 激情五月婷婷综合网| 久久亚洲综合色| 国产在线精品一区二区| 国产欧美一区二区三区鸳鸯浴 | 极品少妇一区二区三区精品视频| 精品国产电影一区二区| 国产精品99久久久久久久女警| 国产亚洲自拍一区| 波多野结衣欧美| 一区二区三区在线不卡| 欧美日韩不卡视频| 免费观看成人鲁鲁鲁鲁鲁视频| 欧美成人女星排名| 国产成人h网站| 亚洲欧美另类图片小说| 精品污污网站免费看| 免费在线观看日韩欧美| 欧美精品一区二区在线观看| 国产91精品精华液一区二区三区 | 久久99久久久久久久久久久| 久久久久久电影| eeuss鲁片一区二区三区在线观看| 一区二区成人在线观看| 777午夜精品免费视频| 国产在线视频不卡二| 国产精品美女久久久久aⅴ国产馆| 日本高清不卡aⅴ免费网站| 日韩极品在线观看| 久久久精品tv| 91久久精品网| 美女视频免费一区| 国产精品乱码久久久久久| 精品视频在线视频| 久久超碰97中文字幕| 国产精品狼人久久影院观看方式| 色综合一个色综合亚洲| 免费日本视频一区| 国产日韩欧美一区二区三区乱码| 成人短视频下载| 亚洲与欧洲av电影| 日韩一级黄色大片| 成人黄色777网| 亚洲高清免费在线| 日韩女优制服丝袜电影| 丰满少妇久久久久久久| 亚洲自拍偷拍综合| 精品国产91九色蝌蚪| 在线观看视频一区| 日韩av一级电影| 中文字幕欧美一| 日韩免费视频一区| 91麻豆国产精品久久| 久久精品国产一区二区三 | 国产亚洲欧美一级| 欧美综合色免费| 国产高清不卡一区| 亚洲大片免费看| 中文字幕第一区综合| 91精品国产乱| 91亚洲午夜精品久久久久久| 天天操天天综合网| 国产欧美日韩三级| 56国语精品自产拍在线观看| 成a人片国产精品| 久久精品国产免费看久久精品| 亚洲一区二区欧美日韩 | 一区二区三区在线观看网站| 在线成人免费观看| 欧美三级在线看| a级精品国产片在线观看| 国产综合久久久久久鬼色| 亚洲h精品动漫在线观看| 国产色产综合产在线视频| 91精品国产高清一区二区三区蜜臀| 91污片在线观看| 国产麻豆欧美日韩一区| 日本中文字幕一区二区视频| 亚洲另类春色校园小说| 久久久夜色精品亚洲| 91超碰这里只有精品国产| 不卡欧美aaaaa| 久久成人免费网站| 天堂成人国产精品一区| 一区二区久久久久| 亚洲视频你懂的| 国产精品污www在线观看| 欧美mv日韩mv| 欧美日本一道本| 在线观看www91| 91网站最新地址| 大尺度一区二区| 国产黄色精品视频| 精品亚洲国产成人av制服丝袜| 亚洲欧美另类久久久精品| 国产欧美一区二区精品性| 亚洲精品一区二区三区精华液| 欧美日韩成人一区| 欧美性高清videossexo| 91尤物视频在线观看| 99久久国产免费看| 成人av电影免费在线播放| 国产99一区视频免费| 国产大陆a不卡| 国产综合色在线| 国产一区视频导航| 国产一区二区调教| 国产在线一区二区综合免费视频| 久久精工是国产品牌吗| 久久精品国产精品亚洲综合| 亚洲国产一区二区三区青草影视| 日本一区二区三区四区在线视频 | 欧美中文字幕不卡| 91丨九色丨蝌蚪丨老版| 不卡视频在线看| 国产精品18久久久久久久久久久久| 久久99精品久久久久婷婷| 麻豆精品在线视频| 久久99九九99精品| 国产一区二区电影| 国内精品国产三级国产a久久| 国精产品一区一区三区mba视频 | 欧美精品v日韩精品v韩国精品v| 福利一区二区在线观看| 99精品久久99久久久久| 色女孩综合影院| 精品视频在线看| 91麻豆精品国产自产在线观看一区| 日韩视频在线你懂得| 欧美成人三级电影在线| 国产精品情趣视频| 亚洲精品视频在线观看网站| 亚洲成人tv网| 九九久久精品视频| 国产真实精品久久二三区| 高清国产午夜精品久久久久久| 成人性色生活片| 欧美亚洲国产一区二区三区va | 亚洲第一激情av| 奇米亚洲午夜久久精品| 狠狠色伊人亚洲综合成人| 成人妖精视频yjsp地址| 一本色道**综合亚洲精品蜜桃冫| 欧美色爱综合网| 日韩欧美国产电影| 日韩三级av在线播放| 亚洲精品一区二区三区在线观看| 国产色一区二区| 亚洲激情成人在线| 免费观看在线色综合| 国产一区二区三区不卡在线观看| 成人激情小说乱人伦| 日本韩国精品在线| 日韩欧美一区二区久久婷婷| 国产网站一区二区三区| 亚洲色图19p| 天涯成人国产亚洲精品一区av| 韩国毛片一区二区三区| 成人晚上爱看视频| 色综合色综合色综合 | 国产成人精品aa毛片| 91国偷自产一区二区三区成为亚洲经典| 欧美高清性hdvideosex| 久久久国际精品| 一区二区三区精品久久久| 蜜臀av一区二区在线观看| 懂色av一区二区三区免费观看 | 欧美大白屁股肥臀xxxxxx| 国产色产综合色产在线视频| 一区二区高清在线| 国模大尺度一区二区三区| 色成年激情久久综合| 精品少妇一区二区三区在线视频 | 2021中文字幕一区亚洲| 亚洲人妖av一区二区| 日本中文字幕一区| 不卡一卡二卡三乱码免费网站| 欧美在线视频你懂得| 日韩精品在线网站| 亚洲色图在线视频| 精品综合久久久久久8888| 91免费在线播放| 精品国产亚洲一区二区三区在线观看| 亚洲丝袜美腿综合| 久久99热这里只有精品| 91精品1区2区| 久久久亚洲精品一区二区三区| 夜夜嗨av一区二区三区网页| 国产一区二区三区综合| 欧美一区二区在线不卡| 亚洲免费观看高清完整版在线 | 久久精品亚洲麻豆av一区二区|