高级会员
- 积分
- 594
- 金钱
- 594
- 注册时间
- 2014-4-3
- 在线时间
- 74 小时
|
1金钱
达芬奇例程 20_ip_fifo,*mark_debug = "true"* 时钟域错误,检查原理图,FIFO读出的数据连到写钟域的u_ila_0模块去了,读与写在不同的时钟域,怎样才能将 FIFO读出的数据 连到读时钟域的u_ila_1模块?
module ip_fifo(
input sys_clk , // 系统时钟信号
input sys_rst_n // 系统复位信号
);
//wire define
wire clk_50m ; // 50M时钟
wire clk_100m ; // 100M时钟
wire locked ; // 时钟锁定信号
wire rst_n ; // 复位,低有效
(*mark_debug = "true"*) wire wr_rst_busy ; // 写复位忙信号
(*mark_debug = "true"*) wire rd_rst_busy ; // 读复位忙信号
(*mark_debug = "true"*) wire fifo_wr_en ; // FIFO写使能信号
(*mark_debug = "true"*) wire fifo_rd_en ; // FIFO读使能信号
(*mark_debug = "true"*) wire [7:0] fifo_wr_data ; // 写入到FIFO的数据
(*mark_debug = "true"*) wire [7:0] fifo_rd_data ; // 从FIFO读出的数据
(*mark_debug = "true"*) wire almost_full ; // FIFO将满信号
(*mark_debug = "true"*) wire almost_empty ; // FIFO将空信号
(*mark_debug = "true"*) wire full ; // FIFO满信号
(*mark_debug = "true"*) wire empty ; // FIFO空信号
(*mark_debug = "true"*) wire [7:0] wr_data_count ; // FIFO写时钟域的数据计数
(*mark_debug = "true"*) wire [7:0] rd_data_count ; // FIFO读时钟域的数据计数
//通过系统复位信号和时钟锁定信号来产生一个新的复位信号
assign rst_n = sys_rst_n & locked;
//例化PLL IP核
clk_wiz_0 clk_wiz_0 (
// Clock out ports
.clk_out1(clk_50m ), // output clk_out1
.clk_out2(clk_100m), // output clk_out2
// Status and control signals
.locked (locked ), // output locked
// Clock in ports
.clk_in1 (sys_clk ) // input clk_in1
);
//例化FIFO IP核
fifo_generator_0 fifo_generator_0 (
.rst (~rst_n ), // input wire rst
.wr_clk (clk_50m ), // input wire wr_clk
.rd_clk (clk_100m ), // input wire rd_clk
.wr_en (fifo_wr_en ), // input wire wr_en
.rd_en (fifo_rd_en ), // input wire rd_en
.din (fifo_wr_data ), // input wire [7 : 0] din
.dout (fifo_rd_data ), // output wire [7 : 0] dout
.almost_full (almost_full ), // output wire almost_full
.almost_empty (almost_empty ), // output wire almost_empty
.full (full ), // output wire full
.empty (empty ), // output wire empty
.wr_data_count (wr_data_count), // output wire [7 : 0] wr_data_count
.rd_data_count (rd_data_count), // output wire [7 : 0] rd_data_count
.wr_rst_busy (wr_rst_busy ), // output wire wr_rst_busy
.rd_rst_busy (rd_rst_busy ) // output wire rd_rst_busy
);
//例化写FIFO模块
fifo_wr u_fifo_wr (
.wr_clk (clk_50m ), // 写时钟
.rst_n (rst_n ), // 复位信号
.wr_rst_busy (wr_rst_busy ), // 写复位忙信号
.fifo_wr_en (fifo_wr_en ), // fifo写请求
.fifo_wr_data (fifo_wr_data), // 写入FIFO的数据
.empty (empty ), // fifo空信号
.almost_full (almost_full ) // fifo将满信号
);
//例化读FIFO模块
fifo_rd u_fifo_rd (
.rd_clk (clk_100m ), // 读时钟
.rst_n (rst_n ), // 复位信号
.rd_rst_busy (rd_rst_busy ), // 读复位忙信号
.fifo_rd_en (fifo_rd_en ), // fifo读请求
.fifo_rd_data (fifo_rd_data), // 从FIFO输出的数据
.almost_empty (almost_empty), // fifo将空信号
.full (full ) // fifo满信号
);
endmodule
|
|