ADRAM的顶层模块:
1、FIFO_read模块:
模块框图:
波形图:
利用UART串口发送
参考:通信协议(一)——UART协议_发光中请勿扰的博客-优快云博客
需要重新建立一个同步FIFO内核
代码:
module FIFO_Read
(
input sys_clk ,
input sys_rst_n ,
input [9:0] rd_fifo_num ,
input [7:0] rd_fifo_rd_data ,
input [9:0] burst_num ,
output reg rd_en ,
output [7:0] tx_data ,
output reg tx_flag
);
parameter baud_cnt_max = 13'd5207,
baud_cnt_half = 13'd2603;
parameter cnt_wait_max = 24'd4_999_999;
wire [9:0] data_num ;
reg rd_en_dly ;
reg rd_flag ;
reg [12:0] baud_cnt ;
reg [3:0] bit_cnt ;
reg bit_flag ;
reg read_fifo_en ;
reg [9:0] cnt_read ;
always@ (posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
rd_en <= 1'b0;
else if(rd_fifo_num == burst_num)
rd_en <= 1'b1;
else if(data_num == burst_num - 2)
rd_en <= 1'b0;
always@ (posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
rd_en_dly <= 1'b0;
else
rd_en_dly <= rd_en;
always@ (posedge sys_clk or negedge sys_rst_n)
if(!sys_rst_n)
rd_flag <= 1'b0;
else if(cnt_read == burst_num)
rd_flag <= 1'b0;
else if(data_num == burst_num)
rd_flag <= 1'b1;
always@ (posedge