UART IP和UVM的验证平台

本文介绍了一种兼容16550A标准的UART IP核,该IP核提供了类似FIFO操作、中断请求等功能。文中还提到了此IP核的UVM验证平台实例,并给出了参考文献。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

UART是工程师在开发调试时最常用的工具的,其通信协议简单。opencores 网站提供了兼容16550a的UART IP其基本特性如下:

uart16550 is a 16550 compatible (mostly) UART core.

The bus interface is WISHBONE SoC bus Rev. B.

Features all the standard options of the 16550 UART: FIFO based operation, interrupt requests and other.

该UART IP的UVM验证平台在《A Practical Guide to Adopting the Universal Verification Methodology (UVM),Second Edition.》这本书中就有,书中的所有例子都在uvm_ref_flow_1.2中。

 

参考文献:

[1] uart16550. http://opencores.org/project,uart16550

[2] Kathleen Meade and Sharon Rosenberg. A Practical Guide to Adopting the Universal Verification Methodology (UVM),Second Edition.

转载于:https://www.cnblogs.com/dpc525/p/5479619.html

串行通信IP核 用于FPGA -- File Name: Baud_rate_generator.vhd -- Function: Baud rate generator for uart communication -- System clock:32MHz -- ************************************************************ -- 7.2 Build 11/02/2009 Full Version 1.0 -- Copyright for limang -- ************************************************************ library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; -- ************************************************************ -- Port Description -- clk: System clock -- data: Decision the Baud rate -- uart_clk: Clock output for uart -- ************************************************************ entity Baud_rate_generator is port ( clk:in std_logic; data:in std_logic_vector (3 downto 0); uart_clk:out std_logic ); end entity Baud_rate_generator; --*********************** -- Baud_rate for input --*********************** --| data | Baud_rate | --| 0000 | 1200 | --| 0001 | 2400 | --| 0010 | 4800 | --| 0011 | 9600 | --| 0100 | 14400 | --| 0101 | 19200 | --| 0110 | 28800 | --| 0111 | 38400 | --| 1000 | 57600 | --| 1001 | 115200 | --|others| for updata | --*********************** architecture behave of Baud_rate_generator is constant system_clock:integer:=32e6; signal divisor:integer range 4444 downto 46; signal cnt:integer range 4444 downto 0:=0; signal clk_tmp:std_logic; begin process(data) begin case data is when "0000" => divisor divisor divisor divisor divisor divisor divisor divisor divisor divisor null; end case; end process; process(clk) begin if clk'event and clk='1' then cnt<=cnt
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值