⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tb_uart_monitor.v

📁 32位单精度浮点加法器
💻 V
字号:
//-----------------------------------------------------------------------------//  //  Copyright (c) 2009 Xilinx Inc.////  Project  : Programmable Wave Generator//  Module   : tb_uart_monitor.v//  Parent   : tb_uart_rx//  Children : none////  Description: //    This testbench module converts RS232 serial data to parallel data.//    It is essentially a behavioral implementation of a UART receiver, //    receiving the RS232 protocol; START, 8 data bits (LSbit first), STOP,//    and signaling that it has a complete character.////  Parameters: //    BAUD_RATE        : Baud rate for the receiver////  Tasks://    start            : Enables the checker////  Functions://    None////  Notes       : //    ////  Multicycle and False Paths//    None - this is a testbench file only, and is not intended for synthesis//// All times in this testbench are expressed in units of nanoseconds, with a // precision of 1ps increments`timescale 1ns/1psmodule tb_uart_monitor (  input            data_in,       // Incoming serial data  output reg [7:0] char,          // Received character  output reg       char_val       // Pulsed when char is valid);//***************************************************************************// Parameter definitions//***************************************************************************  parameter BAUD_RATE = 57_600;  localparam BIT_PER = (1_000_000_000.0)/BAUD_RATE;//***************************************************************************// Register declarations//***************************************************************************  reg     enabled = 1'b0;  integer i;//***************************************************************************// Tasks//***************************************************************************  task start;  begin    enabled = 1'b1;  end  endtask//***************************************************************************// Code//***************************************************************************  initial    char_val = 1'b0;  always @(negedge data_in)  begin    if (enabled)    begin      // This should be the leading edge of the start bit      #(BIT_PER * 1.5); // Wait until the middle of the first bit      for (i = 0; i<=7; i=i+1)      begin        // Capture the bit        char[i] = data_in;        // Wait to the middle of the next        #(BIT_PER);      end      // We should be in the middle of the stop      if (data_in !== 1'b1)      begin        $display("%t ERROR Framing error detected in %m",$realtime());      end      // Pulse char_val for 1ns      char_val = 1'b1;      char_val <= #1 1'b0;    end // if enabled  end // alwaysendmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -