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

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

?? mp_int.v

?? Verilog實現mini-uart
?? V
字號:
//============================================================================
//
//        Title     : UART INTERFACE DESIGN
//        Author    : JP LIU
//
//=============================================================================
//
//        File Name      : mp_int.v
//        Module Name    : mp_int
//
//=============================================================================
//
// Microprocessor Interface module
// This module provides the interface between the uart receiver and transmitter 
//and the microprocessor bus
//
// Register Map
//
// Address  Mode  Name             Desc
// 000      W     XMIT_DAT_REG     When data is written to this reg,
// 000      R     REC_DAT_REG
// 001      R/W   BAUD_REG_LO
// 010      R/W   BAUD_REG_HI
// 011      R     STAT_REG         0 = Xmit Busy. 
//                                     Set when new data is written to the
//                                     transmit data register.  Cleared when
//                                     transmitter is done transmitting.  
//                                 1 = Rec Data Available. Set when new data is 
//                                     received from receiver. Cleared when MP
//                                     reads from the read register 
//                                 2 =
//                                 3 =
//                                 4 =
//                                 5 =
//                                 6 =
//                                 7 =
// 100      R/W   INT_STAT_REG     Interrupt status register
//                                 Write 1 to clear the specific bits
//                                 0 =
//                                 1 =
//                                 2 =
//                                 3 =
//                                 4 =
//                                 5 =
//                                 6 =
//                                 7 =
// 101      R/W   INT_ENA_REG      Interrupt enable register
//
//=============================================================================

`include "uart_inc.h"

module mp_int 
(
  // Output Port
  START_PULSE,
  REG_XMIT_DAT,
  BAUD_RATE_DIV,
  MP_DATA_FROM_UART,
  MP_INT_B,

  // Input Port
  SYS_RST_B,
  UART_CLK,
  MP_CLK,
  MP_CS_B,
  MP_ADDX,
  MP_DATA_TO_UART,
  MP_RD_B,
  MP_WR_B,
  XMIT_DONE,
  REC_DATA,
  REC_READY
);


////////////////////////////////////////////// 
//
// INPUT AND OUTPUT DECLARATION             //
//
//////////////////////////////////////////////


output        START_PULSE;
output [7:0]  REG_XMIT_DAT;
output [15:0] BAUD_RATE_DIV;
output [7:0]  MP_DATA_FROM_UART;
output        MP_INT_B;

input         SYS_RST_B;
input         UART_CLK;
input         MP_CLK;
input         MP_CS_B;
input  [2:0]  MP_ADDX;
input  [7:0]  MP_DATA_TO_UART;
input         MP_RD_B;
input         MP_WR_B;
input         XMIT_DONE;
input  [7:0]  REC_DATA;
input         REC_READY;

/////////////////////////////////////////////
//
// WIRE AND REG DECLARATION                //
//
/////////////////////////////////////////////

wire          START_PULSE;
wire   [7:0]  MP_DATA_FROM_UART;
wire          MP_INT_B;
wire   [15:0] BAUD_RATE_DIV;

wire          SYS_RST_B;
wire          UART_CLK;
wire          MP_CLK;
wire          MP_CS_B;
wire   [2:0]  MP_ADDX;
wire   [7:0]  MP_DATA_TO_UART;
wire          MP_RD_B;
wire          MP_WR_B;
wire          XMIT_DONE;
wire   [7:0]  REC_DATA;
wire          REC_READY;

reg    [7:0]  REG_XMIT_DAT;

wire   [7:0]  MP_DATA;
wire          SEL_BAUD_REGLO;
wire          SEL_BAUD_REGHI;
wire          SEL_XMIT_DAT;
wire          SEL_INT_MASK;
wire          SEL_INT_STAT_REG;
wire          XMIT_BUSY_RST;
wire          XMIT_BUSY_SYNC;
wire          XMIT_DONE_SYNC;
wire          REC_READY_SYNC;
wire          REC_READY_PULSE;
wire          WR_DONE_PULSE;

reg    [7:0]  REG_BAUD_RATE_DIV_LO_IN;
reg    [7:0]  REG_BAUD_RATE_DIV_LO;
reg    [7:0]  REG_BAUD_RATE_DIV_HI;
reg    [7:0]  REG_INT_ENA;
reg           XMIT_BUSY;
reg           REC_NEW_DATA;
reg           STAT_REC_DATA;
reg           STAT_XMIT_EMPTY;
reg    [7:0]  MP_DATA_OUT;

/////////////////////////////////////////////
//  SEQUENCAL LOGIC                        //
/////////////////////////////////////////////

assign MP_DATA           = MP_DATA_TO_UART;
assign MP_DATA_FROM_UART = MP_DATA_OUT;

assign BAUD_RATE_DIV     = {REG_BAUD_RATE_DIV_HI,REG_BAUD_RATE_DIV_LO};

assign SEL_BAUD_REGLO    = ~MP_CS_B && (MP_ADDX==SEL_BAUD_REG_LO);
assign SEL_BAUD_REGHI    = ~MP_CS_B && (MP_ADDX==SEL_BAUD_REG_HI);
assign SEL_XMIT_DAT      = ~MP_CS_B && (MP_ADDX==SEL_XMIT);
assign SEL_INT_MASK      = ~MP_CS_B && (MP_ADDX==SEL_INT_ENA);
assign SEL_INT_STAT_REG  = ~MP_CS_B && (MP_ADDX==SEL_INT_STAT);

assign MP_INT_B          =~((STAT_XMIT_EMPTY && REG_INT_ENA[0]) || (STAT_REC_DATA && REG_INT_ENA[1]));

always @(posedge MP_CLK or negedge SYS_RST_B)
 if (~SYS_RST_B) 
     begin
       REG_BAUD_RATE_DIV_LO <= #1 0;
       REG_BAUD_RATE_DIV_HI <= #1 0;   
       REG_XMIT_DAT         <= #1 0;
       REG_INT_ENA          <= #1 0;
     end 
 else 
     begin
       if (~MP_WR_B) 
           begin
              if (SEL_BAUD_REGLO)
                     REG_BAUD_RATE_DIV_LO_IN <= #1 MP_DATA;
              if (SEL_BAUD_REGHI) 
                  begin
                     REG_BAUD_RATE_DIV_HI <= #1 MP_DATA;
                     REG_BAUD_RATE_DIV_LO <= #1 REG_BAUD_RATE_DIV_LO_IN;
                  end
              if (SEL_XMIT_DAT)   
                     REG_XMIT_DAT  <= #1 MP_DATA;
              if (SEL_INT_MASK)   
                     REG_INT_ENA   <= #1 MP_DATA;   
          end
     end

always @(MP_ADDX or REC_DATA or REG_BAUD_RATE_DIV_LO or 
         REG_BAUD_RATE_DIV_HI or STAT_REC_DATA or STAT_XMIT_EMPTY or 
         REG_INT_ENA or REC_NEW_DATA or XMIT_BUSY )
    case (MP_ADDX)
      SEL_REC_DAT:     MP_DATA_OUT = REC_DATA;
      SEL_BAUD_REG_LO: MP_DATA_OUT = REG_BAUD_RATE_DIV_LO;
      SEL_BAUD_REG_HI: MP_DATA_OUT = REG_BAUD_RATE_DIV_HI;
      SEL_STAT_REG:    MP_DATA_OUT = {REC_NEW_DATA,XMIT_BUSY};
      SEL_INT_STAT:    MP_DATA_OUT = {STAT_REC_DATA,STAT_XMIT_EMPTY};
      SEL_INT_ENA:     MP_DATA_OUT = REG_INT_ENA;
      default:         MP_DATA_OUT = 8'Hxx;
    endcase

always @(posedge MP_CLK or negedge SYS_RST_B)
   if (~SYS_RST_B) 
      begin
        STAT_REC_DATA <= #1 1'B0 ;
        STAT_XMIT_EMPTY <= #1 1'B1;
      end
   else
      begin
        if (SEL_INT_STAT_REG && ~MP_WR_B)
              STAT_XMIT_EMPTY <= #1 MP_DATA[0];
        else if (XMIT_BUSY_RST)
              STAT_XMIT_EMPTY <= #1 1'B1;
        else if (SEL_XMIT_DAT && ~MP_WR_B)
              STAT_XMIT_EMPTY <= #1 1'B0;
        if (SEL_INT_STAT_REG && ~MP_WR_B)
              STAT_REC_DATA <= #1 MP_DATA[1];
        else if (REC_READY_PULSE)
              STAT_REC_DATA <= #1 1'B1;        else if (SEL_XMIT_DAT && ~MP_RD_B)
              STAT_REC_DATA <= #1 1'B0;
      end

always @(posedge MP_CLK or negedge SYS_RST_B)
   if (~SYS_RST_B) 
         REC_NEW_DATA <= #1 1'B0;
   else if (REC_READY_PULSE)
         REC_NEW_DATA <= #1 1'B1;
   else if (SEL_XMIT_DAT && MP_RD_B)
         REC_NEW_DATA <= #1 1'B0;

always @(posedge MP_CLK or negedge SYS_RST_B)
   if (~SYS_RST_B)
         XMIT_BUSY <= #1 1'B0;
   else if (~XMIT_DONE_SYNC)
         XMIT_BUSY <= #1 1'B0;
   else if (WR_DONE_PULSE && SEL_XMIT_DAT)
         XMIT_BUSY <= #1 1'B1;
   
ONE_SHOT I_ONT_SHOT_0 (
                      .Q              (WR_DONE_PULSE),                 
                      .SYS_RST_B      (SYS_RST_B),
                      .CLK_IN         (MP_CLK),
                      .D              (MP_WR_B)
                      );

ONE_SHOT I_ONT_SHOT_1 (
                      .Q              (START_PULSE),                 
                      .SYS_RST_B      (SYS_RST_B),
                      .CLK_IN         (UART_CLK),
                      .D              (XMIT_BUSY_SYNC)
                      );

ONE_SHOT I_ONT_SHOT_2 (
                      .Q              (XMIT_BUSY_RST),                 
                      .SYS_RST_B      (SYS_RST_B),
                      .CLK_IN         (MP_CLK),
                      .D              (XMIT_DONE_SYNC)
                      );

ONE_SHOT I_ONT_SHOT_3 (
                      .Q              (REC_READY_PULSE),                 
                      .SYS_RST_B      (SYS_RST_B),
                      .CLK_IN         (MP_CLK),
                      .D              (REC_READY_SYNC)
                      );

SYNC I_SYNC_0 (
                .Q              (XMIT_BUSY_SYNC),
                .CLK_IN         (UART_CLK),
                .SYS_RST_B      (SYS_RST_B),
                .D              (XMIT_BUSY)
              );

SYNC I_SYNC_1 (
              .Q              (XMIT_DONE_SYNC),
              .CLK_IN         (MP_CLK),
              .SYS_RST_B      (SYS_RST_B),
              .D              (XMIT_DONE)
              );

SYNC I_SYNC_2 (
              .Q              (REC_READY_SYNC),
              .CLK_IN         (MP_CLK),
              .SYS_RST_B      (SYS_RST_B),
              .D              (REC_READY)
              );`endprotect

endmodule

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷国产精品综合在线观看| 777奇米成人网| 欧美日本精品一区二区三区| www精品美女久久久tv| 亚洲男人天堂一区| 国产精品小仙女| 欧美精品一二三| 亚洲精品国产精华液| 国产毛片精品国产一区二区三区| 欧美日本一区二区三区| 亚洲三级在线看| 国产剧情一区二区三区| 欧美一区二区三区免费大片| 亚洲色图色小说| jizzjizzjizz欧美| 欧美国产一区视频在线观看| 麻豆91在线播放| 欧美最猛性xxxxx直播| 自拍av一区二区三区| 成人免费看黄yyy456| 国产日韩欧美激情| 国产精品夜夜嗨| 精品1区2区在线观看| 青娱乐精品视频在线| 日韩一区二区三区av| 日韩高清不卡一区二区三区| 欧美曰成人黄网| 亚洲小说欧美激情另类| 色视频欧美一区二区三区| 亚洲视频一区二区在线| 成a人片国产精品| 亚洲日本在线看| 91色在线porny| 亚洲综合在线视频| 欧美日韩国产综合一区二区| 亚洲va在线va天堂| 欧美精品免费视频| 麻豆成人av在线| www国产成人免费观看视频 深夜成人网| 免费看日韩精品| 久久久精品一品道一区| 成人综合在线观看| 亚洲欧美一区二区在线观看| 99vv1com这只有精品| 亚洲一区二区三区视频在线播放| 欧美日韩日日骚| 久久机这里只有精品| 久久精品视频免费观看| caoporn国产精品| 一区二区欧美视频| 日韩一区和二区| 成人一级片在线观看| 一区二区中文字幕在线| 欧美色综合久久| 精品亚洲国内自在自线福利| 中文字幕av一区二区三区免费看| aa级大片欧美| 日韩电影在线免费看| 国产性色一区二区| 欧美在线视频不卡| 久久99国产精品尤物| 自拍偷拍欧美精品| 日韩一级免费观看| 91一区二区三区在线播放| 无吗不卡中文字幕| 欧美激情一二三区| 欧美日韩亚洲综合一区二区三区 | 亚洲精品一卡二卡| 欧美日韩美少妇| 国产精品一区在线| 亚洲线精品一区二区三区| 精品久久久久久亚洲综合网| 国产aⅴ综合色| 日本午夜一区二区| 亚洲欧洲精品一区二区三区不卡| 8x福利精品第一导航| 成人黄色免费短视频| 日韩电影在线一区二区| 亚洲三级在线免费观看| 精品国产91乱码一区二区三区| 91麻豆国产精品久久| 麻豆成人久久精品二区三区小说| 亚洲精品久久嫩草网站秘色| 亚洲精品一区二区三区精华液| 91免费精品国自产拍在线不卡| 久久精品国产99国产精品| 一区二区在线电影| 欧美国产丝袜视频| 精品国产成人在线影院| 欧美男生操女生| 欧美在线短视频| av在线这里只有精品| 激情综合色丁香一区二区| 亚洲一区影音先锋| 国产精品美女久久久久久久| 精品少妇一区二区三区在线视频| 欧美探花视频资源| 一本一道综合狠狠老| 从欧美一区二区三区| 国产精品99久久久久| 麻豆久久一区二区| 日产国产欧美视频一区精品| 亚洲国产日韩av| 一区二区久久久久| 亚洲人成精品久久久久| 国产精品久久久久久久午夜片| 欧美xfplay| 精品国产一区二区在线观看| 日韩欧美国产成人一区二区| 在线不卡中文字幕| 91精品国产91久久久久久最新毛片| 色系网站成人免费| 色天使久久综合网天天| 在线视频中文字幕一区二区| 日本精品一级二级| 欧美色成人综合| 欧美人与性动xxxx| 91精品国产综合久久久久久久| 91精品国产色综合久久不卡蜜臀 | 成人动漫在线一区| av网站免费线看精品| 99久久精品免费精品国产| 91一区二区在线观看| www.亚洲精品| 欧洲人成人精品| 欧美日韩激情一区二区三区| 欧美一区二区黄| 欧美v日韩v国产v| 国产午夜三级一区二区三| 中文av一区二区| 亚洲免费资源在线播放| 亚洲图片欧美综合| 美女视频黄免费的久久| 国产酒店精品激情| 91欧美激情一区二区三区成人| 欧美三区在线观看| 欧美大黄免费观看| 国产精品视频一区二区三区不卡| 亚洲人快播电影网| 免费人成精品欧美精品| 国产成都精品91一区二区三| 91丨九色丨国产丨porny| 欧美视频在线观看一区| 久久婷婷综合激情| 亚洲免费观看高清| 精品亚洲欧美一区| 色综合色狠狠综合色| 欧美一区二区成人| 国产精品你懂的在线欣赏| 亚洲一卡二卡三卡四卡五卡| 毛片av一区二区| 99久久综合国产精品| 欧美人伦禁忌dvd放荡欲情| 久久午夜色播影院免费高清 | 97久久精品人人澡人人爽| 8x福利精品第一导航| 国产精品不卡在线| 午夜欧美大尺度福利影院在线看 | 欧美日韩一区二区在线视频| 久久免费视频色| 樱桃视频在线观看一区| 国产一二三精品| 精品视频全国免费看| 中文字幕第一页久久| 日韩福利电影在线观看| 色婷婷综合久久久| 久久久久久久久久久久久女国产乱| 一区二区免费在线| 丁香一区二区三区| 日韩精品专区在线影院观看 | 国产老肥熟一区二区三区| 欧美日韩国产一区| 亚洲日本va午夜在线电影| 国产成人av电影在线观看| 91精品国产美女浴室洗澡无遮挡| 综合电影一区二区三区 | 精品国内片67194| 亚洲第一激情av| 色综合色狠狠天天综合色| 国产精品青草综合久久久久99| 久久国产日韩欧美精品| 欧美另类变人与禽xxxxx| 亚洲欧美日韩一区二区三区在线观看| 欧美视频一二三区| 国产精品蜜臀av| 国产传媒一区在线| 久久婷婷综合激情| 国产一区二区福利| 337p日本欧洲亚洲大胆精品| 蜜乳av一区二区三区| 欧美乱熟臀69xxxxxx| 亚洲一区二区精品视频| 色综合久久久久综合99| 亚洲日本电影在线| 91美女在线视频| 伊人开心综合网| 欧美午夜电影在线播放| 亚洲风情在线资源站| 色婷婷久久99综合精品jk白丝| 亚洲美女免费在线|