集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1120|回复: 2

uart仿真调试

[复制链接]
fpga_feixiang 发表于 2021-1-14 10:55:51 | 显示全部楼层 |阅读模式
1 `timescale 1ns/1ps  //时间精度
2 `define    Clock 20 //时钟周期
3
4 module uart_top_tb;
5
6 //========================< 端口 >==========================================
7 reg                         clk                 ; //时钟,50Mhz
8 reg                         rst_n               ; //复位,低电平有效
9 reg                         uart_rx             ;
10 wire                        uart_tx             ;
11
12 //==========================================================================
13 //==    模块例化
14 //==========================================================================
15 uart_top u_uart_top
16 (
17     .clk                    (clk                ),
18     .rst_n                  (rst_n              ),
19     .uart_rx                (uart_rx            ),
20     .uart_tx                (uart_tx            )
21 );
22
23 //==========================================================================
24 //==    时钟信号和复位信号
25 //==========================================================================
26 initial begin
27     clk = 1;
28     forever
29         #(`Clock/2) clk = ~clk;
30 end
31
32 initial begin
33     rst_n = 0; #(`Clock*20+1);
34     rst_n = 1;
35 end
36
37 //==========================================================================
38 //==    task任务
39 //==========================================================================
40 reg  [7:0]              mem[15:0]           ; //位宽为8,深度为16个数据
41 integer                 i                   ;
42 integer                 j                   ;
43
44 //读取外部数据
45 initial $readmemh("./data.txt",mem);
46
47 //位赋值
48 task rx_bit
49 (
50     input [7:0]         data
51 );
52     begin
53         for(i=0;i<=9;i=i+1) begin   //10个bit为
54             case(i)
55                  0: uart_rx = 1'b0;
56                  1: uart_rx = data[i-1];
57                  2: uart_rx = data[i-1];
58                  3: uart_rx = data[i-1];
59                  4: uart_rx = data[i-1];
60                  5: uart_rx = data[i-1];
61                  6: uart_rx = data[i-1];
62                  7: uart_rx = data[i-1];
63                  8: uart_rx = data[i-1];
64                  9: uart_rx = 1'b1;
65             endcase
66             #1040; //一个完整波特延时:52*20=1040
67         end        //考虑到空闲位,也可以设置得1040稍大一些
68     end
69 endtask
70
71 //字节赋值
72 task rx_byte;
73     begin
74         for(j=0;j<=15;j=j+1) //16个byte数据
75             rx_bit(mem[j]);
76     end
77 endtask
78
79 //==========================================================================
80 //==    调用task
81 //==========================================================================
82 initial begin
83     #(`Clock*20+1);
84     rx_byte();
85 end
86
87 initial begin
88     #180000;
89     $stop;
90 end
91
92 endmodule
大鹏 发表于 2021-1-17 16:11:59 | 显示全部楼层
uart仿真调试
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-17 01:17 , Processed in 0.060536 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表