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

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

?? rs232_syscon.v

?? vga ipcore的verilog代碼
?? V
?? 第 1 頁 / 共 3 頁
字號:
          .load(rs232_tx_load),
          .data(rs232_tx_char),
          .load_request(rs232_tx_load_request),
          .txd(rs232_txd_o)
         );

// A receiver, which asserts "word_ready" to indicate a received word.
// Asserting "read_word" will cause "word_ready" to go low again if it was high.
// The character is held in the output register, during the time the next
//   character is coming in.
rs232rx #(
          `START_BITS,  // start_bits
          `DATA_BITS,   // data_bits
          `STOP_BITS,   // stop_bits
          `CLOCK_FACTOR // clock_factor
         )
         rs232_rx_block // instance name
         ( 
          .clk(clk_i),
          .rx_clk(serial_clk),
          .reset(reset_i || (| rs232_rx_error)),
          .rxd(rs232_rxd_i),
          .read(rs232_tx_load),
          .data(rs232_rx_char),
          .data_ready(rs232_rx_data_ready),
          .error_over_run(rs232_rx_error[0]),
          .error_under_run(rs232_rx_error[1]),
          .error_all_low(rs232_rx_error[2])
         );

//`undef START_BITS 
//`undef DATA_BITS 
//`undef STOP_BITS 
//`undef CLOCK_FACTOR


//--------------------------------------------------------------------------
// Module code
//--------------------------------------------------------------------------

assign adr_o = master_bg_i?adr_ptr:master_adr_i;
assign we_o = master_bg_i?we_l:master_we_i;
assign stb_o = master_bg_i?stb_l:master_stb_i;


assign dat_io = (master_bg_i && we_l && stb_l)?
                   dat_sr:{`NIBBLE_SIZE*DAT_DIGITS_PP{1'bZ}};
                   
// Temporary
assign cyc_o = stb_o;  // Separate cyc_o is not yet supported!


// This is the adress offset counter
always @(posedge clk_i)
begin
  if (reset_i || reset_adr_offset) adr_offset <= 0;
  else if (incr_adr_offset) adr_offset <= adr_offset + 1;
end
// This forms the adress pointer which is used on the bus.
assign adr_ptr = adr_sr + adr_offset;


// This is the ROM for the ASCII characters to be transmitted.
always @(msg_pointer)
begin
  case (msg_pointer) // synthesis parallel_case
    5'b00000 : msg_char <= "0";    // Hexadecimal characters
    5'b00001 : msg_char <= "1";
    5'b00010 : msg_char <= "2";
    5'b00011 : msg_char <= "3";
    5'b00100 : msg_char <= "4";
    5'b00101 : msg_char <= "5";
    5'b00110 : msg_char <= "6";
    5'b00111 : msg_char <= "7";
    5'b01000 : msg_char <= "8";
    5'b01001 : msg_char <= "9";
    5'b01010 : msg_char <= "A";    // Address error indication
    5'b01011 : msg_char <= "B";
    5'b01100 : msg_char <= "C";    // Command error indication
    5'b01101 : msg_char <= "D";    // Data error indication
    5'b01110 : msg_char <= "E";
    5'b01111 : msg_char <= "F";
    5'b10000 : msg_char <= " ";    // Space
    5'b10001 : msg_char <= ":";    // Colon
    5'b10010 : msg_char <= " ";    // Space
    5'b10011 : msg_char <= "?";    // Parse error indication
    5'b10100 : msg_char <= "!";    // ack_i/err_i error indication
    5'b10101 : msg_char <= "O";    // "All is well" message
    5'b10110 : msg_char <= "K";
    5'b10111 : msg_char <= 8'h0d;  // Carriage return & line feed
    5'b11000 : msg_char <= 8'h0a;
    5'b11001 : msg_char <= "-";    // Command Prompt
    5'b11010 : msg_char <= ">";
    5'b11011 : msg_char <= " ";
    5'b11100 : msg_char <= "Q";    // Quantity error indication
    default  : msg_char <= "=";
  endcase
end

// This logic determines when to load a transmit character.
assign rs232_tx_load = rs232_echo?
  (rs232_rx_data_ready && rs232_tx_load_request):rs232_tx_load_request;

// This is the counter for incrementing, decrementing or resetting the 
// message pointer.
always @(posedge clk_i)
begin
  if (reset_i || reset_msg_offset) msg_offset <= 0;
  else if (incr_msg_offset) msg_offset <= msg_offset + 1;
end
assign msg_pointer = msg_offset + msg_base;



// This is the mux which selects whether to echo back the characters
// received (as during the entering of a command) or to send back response
// characters.
assign rs232_tx_char = (rs232_echo)?rs232_rx_char:msg_char;


// These assigments are for detecting whether the received rs232 character is
// anything of special interest.
assign rx_char_is_enter = (rs232_rx_char == 8'h0d);
assign rx_char_is_backspace = (rs232_rx_char == 8'h08);



// This is state machine m1.  It handles receiving the command line, including
// backspaces, and prints error/response messages.  It also parses and
// executes the commands.

// State register
always @(posedge clk_i)
begin : m1_state_register
  if (reset_i) m1_state <= m1_initial_state; // perform reset for rest of system
  else m1_state <= m1_next_state;
end

// State transition logic
always @(m1_state
         or rx_char_is_enter
         or rx_char_is_backspace
         or msg_offset
         or cmd_ptr
         or rs232_tx_load
         or char_is_whitespace
         or char_is_hex
         or char_is_enter
         or char_is_i
         or char_is_r
         or char_is_w
         or command
         or master_bg_i
         or watchdog_timer_done
         or err_i
         or ack_i
         or adr_offset
         or qty_sr
         or dat_sr
         or rd_adr_sr
         or rd_field_count
         or rd_digit_count
         )
begin : m1_state_logic

  // Default values for outputs.  The individual states can override these.
  msg_base <= 5'b0;
  reset_msg_offset <= 0;
  incr_msg_offset <= 0;
  rs232_echo <= 0;
  rst_o <= 0;
  we_l <= 0;
  stb_l <= 0;
  cmd_buffer_write <= 0;
  reset_cmd_ptr <= 0;
  incr_cmd_ptr <= 0;
  decr_cmd_ptr <= 0;
  master_br_o <= 0;
  cmd_r <= 0;
  cmd_w <= 0;
  cmd_i <= 0;
  shift_rd_adr <= 0;
  store_adr <= 0;          // enables storing hex chars in adr_sr (shift)
  store_dat <= 0;          // enables storing hex chars in dat_sr (shift)
  store_qty <= 0;          // enables storing hex chars in qty_sr (shift)
  reset_adr <= 0;
  reset_dat <= 0;
  reset_qty <= 0;
  init_qty <= 0;
  capture_dat <= 0;        // enables capturing bus data in dat_sr (load)
  incr_adr_offset <= 0;
  reset_adr_offset <= 0;
  reset_watchdog <= 0;
  incr_rd_field_count <= 0;
  incr_rd_digit_count <= 0;
  reset_rd_field_count <= 0;
  reset_rd_digit_count <= 0;

  case (m1_state) // synthesis parallel_case

    m1_initial_state :
      begin
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 15) && rs232_tx_load) begin
          m1_next_state <= m1_send_prompt;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_initial_state;
      end

    m1_send_ok :
      begin
        msg_base <= 5'b10101;     // Address of the OK message
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 1) && rs232_tx_load) begin
          m1_next_state <= m1_send_prompt;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_send_ok;
      end

    m1_send_prompt :
      begin
        msg_base <= 5'b10111;     // Address of the cr,lf,prompt message
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 4) && rs232_tx_load) begin
          m1_next_state <= m1_check_received_char;
          reset_cmd_ptr <= 1;
        end
        else m1_next_state <= m1_send_prompt;
      end

    // This state always leads to activating the parser...
    m1_send_crlf :
      begin
        msg_base <= 5'b10111;     // Address of the cr/lf message
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 1) && rs232_tx_load) begin
          m1_next_state <= m1_scan_command;
          reset_cmd_ptr <= 1;
        end
        else m1_next_state <= m1_send_crlf;
      end

    m1_check_received_char :
      begin
        rs232_echo <= 1;          // Allow echoing of characters
        if (rx_char_is_backspace && rs232_tx_load)
        begin
          m1_next_state <= m1_check_received_char;
          decr_cmd_ptr <= 1;     // This effectively eliminates the last char
        end
        else if (rx_char_is_enter && rs232_tx_load)
        begin
          m1_next_state <= m1_send_crlf;
          cmd_buffer_write <= 1;  // Store the enter as "marker" for parsing
          reset_msg_offset <= 1;
        end
        else if (rs232_tx_load && (cmd_ptr == CMD_BUFFER_SIZE_PP-1))
        begin
          m1_next_state <= m1_parse_error_indicator_crlf;
          reset_msg_offset <= 1;
          reset_cmd_ptr <= 1;
        end
        else if (rs232_tx_load)
        begin
          incr_cmd_ptr <= 1;
          cmd_buffer_write <= 1;
          m1_next_state <= m1_check_received_char;
        end
        else m1_next_state <= m1_check_received_char;
      end

    m1_bg_error_indicator :
      begin
        msg_base <= 5'b01011;    // Address of the B character
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load) begin
          m1_next_state <= m1_ack_error_indicator;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_bg_error_indicator;
      end

    m1_ack_error_indicator :
      begin
        msg_base <= 5'b10100;    // Address of the ! error message
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load) begin
          m1_next_state <= m1_send_prompt;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_ack_error_indicator;
      end

    // This state is used when the line is too long...
    m1_parse_error_indicator_crlf :
      begin
        msg_base <= 5'b10111;    // Address of the cr,lf message.
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 1) && rs232_tx_load) begin
          m1_next_state <= m1_parse_error_indicator;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_parse_error_indicator_crlf;
      end

    m1_parse_error_indicator :
      begin
        msg_base <= 5'b10011;    // Address of the ? message.
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load) begin
          m1_next_state <= m1_send_prompt;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_parse_error_indicator;
      end

    m1_cmd_error_indicator :
      begin
        msg_base <= 5'b01100;    // Address of 'C'
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load) begin
          m1_next_state <= m1_parse_error_indicator;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_cmd_error_indicator;
      end

    m1_adr_error_indicator :
      begin
        msg_base <= 5'b01010;    // Address of 'A'
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load)
        begin
          m1_next_state <= m1_parse_error_indicator;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_adr_error_indicator;
      end

    m1_dat_error_indicator :
      begin
        msg_base <= 5'b01101;    // Address of 'D'
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load)
        begin
          m1_next_state <= m1_parse_error_indicator;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_dat_error_indicator;
      end

    m1_qty_error_indicator :
      begin
        msg_base <= 5'b11100;    // Address of 'Q'
        incr_msg_offset <= rs232_tx_load;
        if ((msg_offset == 0) && rs232_tx_load)
        begin
          m1_next_state <= m1_parse_error_indicator;
          reset_msg_offset <= 1;
        end
        else m1_next_state <= m1_qty_error_indicator;
      end

    // The following states are for parsing and executing the command.

    // This state takes care of leading whitespace before the command
    m1_scan_command :
      begin
        rs232_echo <= 1;          // Don't send message characters
        reset_msg_offset <= 1;    // This one reset should cover all of the
                                  // parse/exec. states.  With rs232_echo
                                  // on, and no receive characters arrive,
                                  // then the msg_offset will remain reset.
                                  // This means the watchdog timer can take
                                  // a long time, if need be, during exec.
                                  // (NOTE: It might be better to disable
                                  //  the echoing of rx chars during these
                                  //  states.)
        init_qty <= 1;         // Set qty = 1 by default.  That can be
                               // overridden later, if the command has
                               // a different qty field.
        if (char_is_whitespace) begin
          m1_next_state <= m1_scan_command;
          incr_cmd_ptr <= 1;
        end
        else if (char_is_r) begin
          m1_next_state <= m1_scan_adr_whitespace;

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美xxx久久| 不卡一区二区三区四区| 欧美肥妇bbw| 免费欧美在线视频| 日韩女优电影在线观看| 精品一区二区三区免费播放| 26uuu久久综合| www.日韩精品| 一区二区三区电影在线播| 欧美午夜片在线观看| 日本欧美一区二区三区乱码| 日韩一区二区三区视频在线| 国产在线不卡视频| 欧美韩日一区二区三区四区| 99re成人精品视频| 亚洲国产日韩精品| 日韩免费电影一区| 不卡影院免费观看| 午夜国产精品影院在线观看| 久久亚洲免费视频| 一本到不卡精品视频在线观看 | 久色婷婷小香蕉久久| 国产午夜精品久久久久久久| 色欧美日韩亚洲| 久热成人在线视频| 伊人婷婷欧美激情| 日韩欧美国产wwwww| 94-欧美-setu| 美女久久久精品| 亚洲天堂网中文字| 精品日韩一区二区三区| av不卡在线观看| 六月丁香婷婷色狠狠久久| 国产精品久久夜| 欧美一级在线观看| 91丨九色porny丨蝌蚪| 美国av一区二区| 亚洲黄色尤物视频| 久久亚洲一级片| 欧美日韩免费一区二区三区| 国产精品一区二区在线观看不卡| 亚洲精品国产第一综合99久久| 日韩视频免费观看高清完整版| av在线不卡电影| 麻豆中文一区二区| 一区二区三区中文在线观看| 久久婷婷成人综合色| 欧美精三区欧美精三区| av亚洲精华国产精华| 狠狠色狠狠色综合| 天天综合色天天综合色h| 亚洲欧洲无码一区二区三区| 精品盗摄一区二区三区| 在线成人av网站| 在线观看日韩一区| www.av精品| 国产91露脸合集magnet| 狠狠色丁香九九婷婷综合五月| 五月天一区二区三区| 亚洲精品日日夜夜| 亚洲视频在线观看三级| 欧美激情综合五月色丁香小说| 日韩手机在线导航| 在线成人小视频| 欧美日韩国产高清一区二区| 91麻豆国产福利在线观看| 成人av电影在线| 国产精品一区二区视频| 国产呦精品一区二区三区网站| 蜜臀av在线播放一区二区三区| 丝袜亚洲另类欧美综合| 午夜精品一区二区三区三上悠亚| 亚洲激情图片qvod| 亚洲欧美日韩中文播放| 亚洲欧美欧美一区二区三区| 中文字幕日本不卡| 亚洲精选在线视频| 一区二区三区中文字幕电影| 一区二区免费在线| 一区二区三区精品在线观看| 一区二区在线电影| 亚洲福利一区二区三区| 亚洲午夜久久久| 亚洲高清不卡在线| 日韩电影在线免费看| 蜜臀久久99精品久久久久宅男| 琪琪久久久久日韩精品| 日一区二区三区| 麻豆一区二区三区| 国产一区二区伦理片| 丁香啪啪综合成人亚洲小说| 成人在线综合网| 99久久久免费精品国产一区二区| 97se亚洲国产综合自在线不卡| 91小视频在线免费看| 欧美日韩一本到| 日韩欧美色电影| 久久免费美女视频| 中文字幕欧美一| 丝袜亚洲精品中文字幕一区| 美女一区二区三区| 成人h精品动漫一区二区三区| 99在线精品一区二区三区| 在线观看视频91| 日韩美女在线视频| 国产精品久久久久久久久免费桃花 | 日韩成人一级片| 国产精品一区二区免费不卡| av不卡在线播放| 欧美一区三区四区| 国产精品美女久久久久av爽李琼| 一区二区三区日韩欧美精品| 蜜臀av性久久久久av蜜臀妖精| 国产成人免费视频网站高清观看视频| 99久久99久久精品免费观看| 69堂成人精品免费视频| 亚洲精品在线免费观看视频| 亚洲欧美日韩人成在线播放| 日日摸夜夜添夜夜添国产精品| 国产高清亚洲一区| 欧美日韩久久久一区| 26uuu精品一区二区| 综合久久给合久久狠狠狠97色| 免费高清成人在线| 日本韩国视频一区二区| 久久久精品天堂| 性欧美大战久久久久久久久| 成人精品视频一区二区三区| 欧美四级电影网| 中文字幕乱码日本亚洲一区二区| 亚洲国产精品一区二区久久恐怖片| 国内精品久久久久影院薰衣草| 在线观看不卡视频| 国产精品久线观看视频| 麻豆精品国产91久久久久久| 91色.com| 国产亚洲人成网站| 六月丁香婷婷色狠狠久久| 在线视频你懂得一区| 国产农村妇女毛片精品久久麻豆| 日韩av午夜在线观看| 日本精品免费观看高清观看| 日本一区二区三区高清不卡| 美国三级日本三级久久99| 欧美日韩一区精品| 亚洲天堂成人在线观看| 精品一区二区在线视频| 精品视频在线视频| 亚洲精品国产视频| 成人avav在线| 国产精品久久久久久久第一福利| 国产精品综合二区| 精品久久久久av影院| 日韩国产在线一| 色综合久久久久久久久久久| 亚洲国产精品av| 国产精品亚洲视频| 精品国产第一区二区三区观看体验| 午夜精品福利在线| 欧美日韩国产另类不卡| 亚洲va韩国va欧美va| 欧美中文字幕一区| 一区二区三区中文字幕精品精品| 99精品久久99久久久久| 国产精品久久久久久妇女6080| 国产成人一级电影| 亚洲国产成人私人影院tom| 国产精品乡下勾搭老头1| 精品国产露脸精彩对白| 韩日av一区二区| 久久精品综合网| 成人午夜av影视| 国产精品美女久久久久久久久久久| 处破女av一区二区| 国产精品不卡一区二区三区| 91影院在线观看| 一区二区三区四区五区视频在线观看| 在线视频欧美区| 天天综合日日夜夜精品| 欧美大度的电影原声| 国产一区二区在线视频| 国产女主播视频一区二区| 99综合影院在线| 夜夜嗨av一区二区三区| 欧美高清性hdvideosex| 激情欧美一区二区三区在线观看| 国产亚洲美州欧州综合国| eeuss鲁片一区二区三区在线观看| 亚洲精品日韩一| 在线电影一区二区三区| 国产麻豆精品在线| 国产精品乱码妇女bbbb| 日本精品一区二区三区高清| 日韩成人一级片| 国产欧美精品国产国产专区| 日本久久一区二区三区| 久久精品99国产精品| 中文字幕在线不卡| 欧美精品粉嫩高潮一区二区| 国产精品亚洲成人|