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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rs232_syscon_v.htm

?? This a state-machine driven rs232 serial port interface to a "Wishbone" // type of bus.
?? HTM
?? 第 1 頁 / 共 4 頁
字號:
reg cmd_w;                // Sets command.
reg shift_rd_adr;         // Shifts the rd_adr_sr by one character.
reg store_adr;            // Allows adr_sr to store hex_digit.
reg store_dat;            // Allows dat_sr to store hex_digit.
reg store_qty;            // Allows qty_sr to store hex_digit.
reg reset_adr;            // Clears adr_sr
reg reset_dat;            // Clears dat_sr
reg reset_qty;            // Clears qty_sr
reg init_qty;             // Sets qty_sr to 1
reg capture_dat;          // Puts dat_io into dat_sr for later display.

    // For the buses
wire [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] adr_ptr;  // = adr_sr + adr_offset

reg stb_l;      // "local" stb signal (to distinguish from stb_o)
reg we_l;       // "local" we  signal (to distinguish from we_o)

reg [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] rd_adr_sr; // sr for printing addresses
reg [`NIBBLE_SIZE*ADR_DIGITS_PP-1:0] adr_sr;    // "nibble" shift register
reg [`NIBBLE_SIZE*DAT_DIGITS_PP-1:0] dat_sr;    // "nibble" shift register
reg [`NIBBLE_SIZE*QTY_DIGITS_PP-1:0] qty_sr;    // "nibble" shift register
reg [1:0] command;
reg [`NIBBLE_SIZE*QTY_DIGITS_PP-1:0] adr_offset;   // counts from 0 to qty_sr
reg reset_adr_offset;
reg incr_adr_offset;

    // For the command buffer
reg [CMD_PTR_BITS_PP-1:0] cmd_ptr; // Offset from start of command.
reg reset_cmd_ptr;        // High == set command pointer to zero.
reg incr_cmd_ptr;         // Used for "write port" side of the command buffer
reg decr_cmd_ptr;         // Used for "write port" side of the command buffer
reg cmd_buffer_write;
reg [7:0] cmd_buffer [0:CMD_BUFFER_SIZE_PP-1];
wire [7:0] cmd_char;
wire [7:0] lc_cmd_char;   // Lowercase version of cmd_char

    // For the state machine
reg [4:0] m1_state;
reg [4:0] m1_next_state;

    // For various counters
reg reset_rd_field_count;
reg reset_rd_digit_count;
reg incr_rd_field_count;
reg incr_rd_digit_count;
reg [RD_FIELD_COUNT_BITS_PP-1:0] rd_field_count;  // "fields displayed"
reg [RD_DIGIT_COUNT_BITS_PP-1:0] rd_digit_count;  // "digits displayed"
reg [WATCHDOG_TIMER_BITS_PP-1:0] watchdog_timer_count;
reg reset_watchdog;

     // For the rs232 interface
wire serial_clk;
wire [2:0] rs232_rx_error;
wire rs232_tx_load;
wire rs232_tx_load_request;
wire rs232_rx_data_ready;
wire [7:0] rs232_rx_char;
wire [7:0] rs232_tx_char;   // Either rs232_rx_char or msg_char

//--------------------------------------------------------------------------
// Instantiations
//--------------------------------------------------------------------------


// These defines are for the rs232 interface
`define START_BITS 1
`define DATA_BITS 8
`define STOP_BITS 1
`define CLOCK_FACTOR 8

// This module generates a serial BAUD clock automatically.
// The unit synchronizes on the carriage return character, so the user
// only needs to press the "enter" key for serial communications to start
// working, no matter what BAUD rate and clk_i frequency are used!
auto_baud_with_tracking #(
                          `CLOCK_FACTOR,    // CLOCK_FACTOR_PP
                          16                // LOG2_MAX_COUNT_PP
                          )
  clock_unit_2
  (
  .clk_i(clk_i),
  .reset_i(reset_i),
  .serial_dat_i(rs232_rxd_i),
  .auto_baud_locked_o(),
  .baud_clk_o(serial_clk)
  );

// A transmitter, which asserts load_request at the end of the currently
// transmitted word.  The tx_clk must be a "clock enable" (narrow positive
// pulse) which occurs at 16x the desired transmit rate.  If load_request
// is connected directly to load, the unit will transmit continuously.
rs232tx #(
          `START_BITS,   // start_bits
          `DATA_BITS,    // data_bits
          `STOP_BITS,    // stop_bits (add intercharacter delay...)
          `CLOCK_FACTOR  // clock_factor
         )
         rs232_tx_block // instance name
         ( 
          .clk(clk_i),
          .tx_clk(serial_clk),
          .reset(reset_i),
          .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 <= 8'h30;  //  "0"; // Hexadecimal characters
    5'b00001 : msg_char <= 8'h31;  //  "1";
    5'b00010 : msg_char <= 8'h32;  //  "2";
    5'b00011 : msg_char <= 8'h33;  //  "3";
    5'b00100 : msg_char <= 8'h34;  //  "4";
    5'b00101 : msg_char <= 8'h35;  //  "5";
    5'b00110 : msg_char <= 8'h36;  //  "6";
    5'b00111 : msg_char <= 8'h37;  //  "7";
    5'b01000 : msg_char <= 8'h38;  //  "8";
    5'b01001 : msg_char <= 8'h39;  //  "9";
    5'b01010 : msg_char <= 8'h41;  //  "A"; // Address error indication
    5'b01011 : msg_char <= 8'h42;  //  "B";
    5'b01100 : msg_char <= 8'h43;  //  "C"; // Command error indication
    5'b01101 : msg_char <= 8'h44;  //  "D"; // Data error indication
    5'b01110 : msg_char <= 8'h45;  //  "E";
    5'b01111 : msg_char <= 8'h46;  //  "F";
    5'b10000 : msg_char <= 8'h20;  //  " "; // Space
    5'b10001 : msg_char <= 8'h3A;  //  ":"; // Colon
    5'b10010 : msg_char <= 8'h20;  //  " "; // Space
    5'b10011 : msg_char <= 8'h3F;  //  "?"; // Parse error indication
    5'b10100 : msg_char <= 8'h21;  //  "!"; // ack_i/err_i error indication
    5'b10101 : msg_char <= 8'h4F;  //  "O"; // "All is well" message
    5'b10110 : msg_char <= 8'h4B;  //  "K";
    5'b10111 : msg_char <= 8'h0D;  // Carriage return & line feed
    5'b11000 : msg_char <= 8'h0A;
    5'b11001 : msg_char <= 8'h2D;  //  "-"; // Command Prompt
    5'b11010 : msg_char <= 8'h3E;  //  ">";
    5'b11011 : msg_char <= 8'h20;  //  " ";
    5'b11100 : msg_char <= 8'h51;  //  "Q"; // Quantity error indication
    default  : msg_char <= 8'h3D;  //  "=";
  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;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美视频一区二区三区在线观看| 亚洲成人午夜电影| 欧美一区二区网站| 在线观看亚洲精品视频| 91毛片在线观看| 99久久99久久精品国产片果冻 | 91在线观看免费视频| 国产91综合网| 成人av网址在线| 成人精品电影在线观看| 国产乱码精品一区二区三区忘忧草 | 精品欧美一区二区在线观看| 日韩精品一区二区三区在线观看| 日韩欧美国产1| 久久亚洲私人国产精品va媚药| 日韩午夜在线观看| 国产日韩欧美精品一区| 中文字幕乱码日本亚洲一区二区 | 色婷婷国产精品综合在线观看| av电影在线观看一区| 91成人免费在线视频| 91 com成人网| 久久日韩粉嫩一区二区三区 | 一本色道a无线码一区v| 欧美人动与zoxxxx乱| 日韩欧美久久久| 欧美激情在线看| 亚洲综合无码一区二区| 日本va欧美va瓶| 丁香亚洲综合激情啪啪综合| 一本到不卡精品视频在线观看| 91精品啪在线观看国产60岁| 欧美激情一区二区| 五月天激情小说综合| 狠狠色丁香婷婷综合| 风间由美性色一区二区三区| www.在线成人| 337p亚洲精品色噜噜狠狠| 26uuu精品一区二区| 亚洲一区中文在线| 国产福利一区二区三区视频| 91久久国产最好的精华液| 精品久久久久久最新网址| 亚洲欧美欧美一区二区三区| 久久成人久久鬼色| 色狠狠av一区二区三区| 久久人人爽爽爽人久久久| 亚洲a一区二区| 97久久精品人人澡人人爽| 日韩写真欧美这视频| 一区二区三区国产精华| 国产盗摄女厕一区二区三区| 欧美日韩夫妻久久| 亚洲人成精品久久久久久| 韩国一区二区三区| 欧美精品久久一区二区三区| 日韩一区在线免费观看| 国产在线播精品第三| 91精品婷婷国产综合久久| 亚洲伊人色欲综合网| 91亚洲午夜精品久久久久久| 国产亚洲精品久| 精品午夜一区二区三区在线观看 | 欧美一区二区成人| 亚洲国产aⅴ成人精品无吗| 91视视频在线观看入口直接观看www | 亚洲一区电影777| av中文字幕亚洲| 久久久精品欧美丰满| 久久精品99国产精品| 91精品黄色片免费大全| 亚洲精品成a人| 色香蕉久久蜜桃| 最新国产成人在线观看| www.欧美精品一二区| 国产精品污污网站在线观看 | 综合激情网...| 99久久精品久久久久久清纯| 国产精品美女一区二区在线观看| 国产成人一区在线| 日本一区二区三区dvd视频在线| 激情伊人五月天久久综合| 日韩欧美国产午夜精品| 久久精品噜噜噜成人88aⅴ| 日韩精品在线一区二区| 狠狠色丁香婷婷综合久久片| 久久伊人中文字幕| 国产精品亚洲а∨天堂免在线| 久久精品亚洲精品国产欧美kt∨| 国产91精品精华液一区二区三区| 国产精品久久影院| 欧美专区日韩专区| 日韩精品五月天| 日韩精品综合一本久道在线视频| 韩国女主播一区二区三区| 中文字幕av不卡| 色吊一区二区三区| 日韩精品亚洲一区| 国产亚洲欧洲一区高清在线观看| 成人av网站在线观看| 亚洲小说欧美激情另类| 日韩女优av电影| 成人理论电影网| 亚洲无线码一区二区三区| 欧美大黄免费观看| aaa欧美色吧激情视频| 亚洲一区电影777| 久久青草国产手机看片福利盒子| av电影天堂一区二区在线| 日韩av中文字幕一区二区| 国产欧美一区二区在线观看| 日本国产一区二区| 久久99久久99| 一区二区三区av电影| 欧美大片一区二区三区| 色久综合一二码| 国内精品伊人久久久久av影院| 中文字幕制服丝袜一区二区三区| 91精品国产综合久久婷婷香蕉 | 色综合久久综合网欧美综合网 | 一本色道a无线码一区v| 九九精品一区二区| 亚洲午夜免费福利视频| 国产欧美日韩三区| 日韩一区二区三区精品视频| 91麻豆123| 成人在线综合网站| 精品一区二区日韩| 日日摸夜夜添夜夜添亚洲女人| 国产亚洲精品精华液| 日韩一区二区高清| 欧美在线免费播放| a4yy欧美一区二区三区| 国产在线精品一区二区三区不卡 | 韩国v欧美v日本v亚洲v| 一区二区三区精品久久久| 欧美国产综合色视频| 欧美v日韩v国产v| 欧美精品视频www在线观看| 91福利在线观看| 成人a级免费电影| 国产98色在线|日韩| 国产成人在线电影| 国产伦精品一区二区三区免费迷| 蜜臀久久99精品久久久久宅男 | 久久久久国产成人精品亚洲午夜| 91精品国产乱码久久蜜臀| 欧美色网一区二区| 91国偷自产一区二区使用方法| 北岛玲一区二区三区四区| 成熟亚洲日本毛茸茸凸凹| 国产综合成人久久大片91| 久久99国产精品麻豆| 裸体一区二区三区| 卡一卡二国产精品 | 91麻豆精品在线观看| 99这里只有久久精品视频| 一区二区视频在线| 国产精品久久久久久久蜜臀| 国产片一区二区| 国产精品色眯眯| 国产精品国产三级国产普通话三级| 69堂成人精品免费视频| 经典三级视频一区| 国产精品99久| 欧美一卡二卡在线| 亚洲精选免费视频| 久久 天天综合| 在线成人免费观看| 综合精品久久久| 国产一区二区三区蝌蚪| 欧美日本韩国一区二区三区视频| 国产精品日日摸夜夜摸av| 久久电影网站中文字幕| 欧美性xxxxx极品少妇| 国产精品理伦片| 国产精品自拍三区| 欧美一区二区播放| 亚洲成人777| 在线精品视频小说1| 国产精品久久午夜| 国产剧情av麻豆香蕉精品| 欧美一级黄色录像| 午夜视频一区二区| 一本一道波多野结衣一区二区| 国产性做久久久久久| 国产制服丝袜一区| 日韩三级.com| 蜜桃av一区二区在线观看| 欧美片网站yy| 一区二区三区在线视频观看| 成人国产免费视频| 中文乱码免费一区二区| 国产精品乡下勾搭老头1| 亚洲精品在线三区| 国产在线精品不卡| 久久久亚洲精品石原莉奈| 国产一区二区精品久久| 久久免费电影网| 国产一区二区调教|