基于正点原子开拓者FPGA串口的Modelsim仿真程序

基于正点原子开拓者FPGA串口的Modelsim仿真程序

这是基于正点原子开拓者FPGA串口例程(10_uart_top)自我编写的仿真程序

`timescale 1 ns/ 1 ps
module uart_top_vlg_tst();
// constants                                           
// general purpose registers
reg eachvec;
// test vector input registers
reg sys_clk;
reg sys_rst_n;
reg uart_rxd;
// wires                                               
wire uart_txd;

// assign statements (if any)                          
uart_top i1 (
// port map - connection between master ports and signals/registers   
	.sys_clk(sys_clk),
	.sys_rst_n(sys_rst_n),
	.uart_rxd(uart_rxd),
	.uart_txd(uart_txd)
);
parameter SYS_CLK = 50;				//系统时钟频率,单位Mhz
parameter SYS_PRE = 1000/(SYS_CLK*2);	//时钟周期,单位ns
parameter UART_BPS = 115200;				//串口波特率
parameter BPS_CNT = 1_000_000_000/UART_BPS;//用于串口仿真的时延
initial                                                
begin 
#0;
     sys_clk = 0;
	 sys_rst_n = 0;
	 uart_rxd = 1;	 
#10;
	sys_rst_n = 1;
	
//串口起始信号:高电平到低电平(下降沿)
#BPS_CNT; uart_rxd = 1;  //时间延持BPS_CNTns,自我检查`timescale 1 ns/ 1 ps
#BPS_CNT; uart_rxd = 0;
//串口数据信号:***从位0到位7***,依次发送
//测试数据为2'hb8=8'b1001_1001
#BPS_CNT; uart_rxd = 1;    
#BPS_CNT; uart_rxd = 0;
#BPS_CNT; uart_rxd = 0;
#BPS_CNT; uart_rxd = 1;
#BPS_CNT; uart_rxd = 1;
#BPS_CNT; uart_rxd = 0;
#BPS_CNT; uart_rxd = 0;
#BPS_CNT; uart_rxd = 1;
//串口结束信号
#BPS_CNT; uart_rxd = 1;

#60000; $stop;
                                          
$display("Running testbench");                       
end                                                    
always  #SYS_PRE sys_clk = ~sys_clk;  //产生时钟                                                  
endmodule

仿真结果
在这里插入图片描述
如图,
向uart_rxd 端口发送1101_1000(先发低位0,后发最高位7),
接着模块的端口uart_txd发回1101_1000

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值