|
![](static/image/common/ico_lz.png)
楼主 |
发表于 2013-2-19 11:29:14
|
显示全部楼层
本帖最后由 german010 于 2013-2-19 11:53 编辑
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
第一个文件 testbench
`timescale 1ns/1ps
module modelsim_test_tb;
reg fpga_clk;
reg rst_n;
reg img_clk;
wire img_input_clk;
wire img_d0;
wire img_d1;
wire img_d2;
wire img_d3;
wire img_d4;`timescale 1ns/1ps
module modelsim_test_tb;
reg fpga_clk;
reg rst_n;
reg img_clk;
wire img_input_clk;
wire img_d0;
wire img_d1;
wire img_d2;
wire img_d3;
wire img_d4;
wire img_d5;
wire img_d6;
wire img_d7;
reg img_d_en;
reg img_Xsync;
wire img_lr_sel;
wire img_line_sp_100Hz;
reg img_ir_sensor;
wire rs232_tx;
reg rs232_rx;
wire img_state0;
wire img_state1;
wire img_state_trg;
wire img_spi_sclk;
wire img_spi_en;
wire img_spi_mosi;
wire clk_100m;
//==============================================================================================
parameter CLOCK_40NS = 40;
initial
begin
fpga_clk = 1'b0;
forever
# (CLOCK_40NS/2) fpga_clk = ~fpga_clk; // 25MHz CLOCK
end
//------------------------------------------------------------------
parameter RESET_TIME = 200;
initial
begin
rst_n = 1'b0; // RESET pulse
#RESET_TIME rst_n = 1'b1;
// #RESET_TIME rst_n = 1'b1; //after 1us,RESET over
end
//===============================================================================================data gene
//data clk
parameter CLOCK_56ns = 56;
always @(posedge img_line_sp_100Hz)
begin
img_clk = 1'b0;
repeat(3800) # (CLOCK_56ns/2) img_clk = ~img_clk; // 18MHz CLOCK
end
always @(posedge img_line_sp_100Hz)//-----------------------------------------------img_d_en
begin
img_d_en <= 1'b1;
#(CLOCK_56ns*317 ) img_d_en <= 1'b0;
end
always @(posedge img_line_sp_100Hz)//-----------------------------------------------img_d_en
#(CLOCK_56ns*1900) img_d_en <= 1'b1;
always @(posedge img_line_sp_100Hz)
begin
//-----------------------------------------------Xsync
img_Xsync <= 1'b0;
#(CLOCK_56ns*150 ) img_Xsync <= 1'b1;
#CLOCK_56ns img_Xsync <= 1'b0;
end
//-----------------------------------------------img_input_clk for data generation,not for the input of sdr_test
assign img_input_clk = img_clk & !img_d_en;
//-------------------------------------------------------------------------------------------------data input
reg flg_r;
reg [7:0]send_data_r;
always @(negedge img_input_clk or negedge rst_n)
if(!rst_n)
send_data_r <= 8'd0;
else
send_data_r <=send_data_r+8'd1;
assign {img_d7,img_d6,img_d5,img_d4,img_d3,img_d2,img_d1,img_d0} = send_data_r;
// img_fifo_input_clk
//------------------------------------------------------------------------------------------------img data task
//==============================================================================================spi ctrl
parameter BPS_115200 = 8681; //8681?115200????
parameter DELAY_TIME = 200;
integer i;
reg [7:0]test_data_232;
initial
begin
rs232_rx = 1'b1;
#DELAY_TIME test_data_232 = 16'h72;
transmit_data_232(test_data_232);
# (BPS_115200*15); //delay 1 unit transmit time
test_data_232 = 16'h02;
transmit_data_232(test_data_232);
# (BPS_115200*15); //delay 1 unit transmit time
end
//----------------------------rcv data task
task transmit_data_232;
input[7:0] SEND_DATA_232;
begin
rs232_rx = 1'b1; //RESET rs232_rx
# BPS_115200 rs232_rx = 1'b0; // transmit START bit
$display ("write data: %x\n",SEND_DATA_232);
for(i=0;i<8;i=i+1) //transmit DATA byte
# BPS_115200 rs232_rx = SEND_DATA_232;
# BPS_115200 rs232_rx = 1'b0; // transmit STOP bit
# BPS_115200 rs232_rx = 1'b1; // bus IDLE
end
endtask
//===============================================================================================instance
sdr_test sdr_test(
//data in
.fpga_clk(fpga_clk),
.key3_rst_n(rst_n),//key1
//
//.img_fifo_input_clk(img_fifo_input_clk), //output signal for verification
.img_clk(img_clk), //scope of img_clk is bigger than img_input_clk
.img_d0(img_d0),
.img_d1(img_d1),
.img_d2(img_d2),
.img_d3(img_d3),
.img_d4(img_d4),
.img_d5(img_d5),
.img_d6(img_d6),
.img_d7(img_d7),
.img_d_en(img_d_en),//
.img_Xsync(img_Xsync),
.img_lr_sel(img_lr_sel),
.img_line_sp_100Hz(img_line_sp_100Hz),
.img_ir_sensor(img_ir_sensor),
//rs232
.rs232_tx(rs232_tx),
.rs232_rx(rs232_rx),
/*
sdram_clk(),
sdram_cke(),
sdram_cs_n(),
sdram_ras_n(),
sdram_cas_n(),
sdram_we_n(),
sdram_ba(),
sdram_addr(),
sdram_udqm(),
sdram_ldqm(),
sdram_data(),
*/
//state change
.img_state0(img_state0),
.img_state1(img_state1),
.img_state_trg(img_state_trg),
//serial command
.img_spi_sclk(img_spi_sclk),
.img_spi_en(img_spi_en),
.img_spi_mosi(img_spi_mosi),
//test command
//.test_sig1(test_sig1),
//.test_sig2(test_sig2),
//.test_flg3(test_flg3),
// cmd_coming_sig
.clk_100m(clk_100m)
);
endmodule
wire img_d5;
wire img_d6;
wire img_d7;
reg img_d_en;
reg img_Xsync;
wire img_lr_sel;
wire img_line_sp_100Hz;
reg img_ir_sensor;
wire rs232_tx;
reg rs232_rx;
wire img_state0;
wire img_state1;
wire img_state_trg;
wire img_spi_sclk;
wire img_spi_en;
wire img_spi_mosi;
wire clk_100m;
//==============================================================================================
parameter CLOCK_40NS = 40;
initial
begin
fpga_clk = 1'b0;
forever
# (CLOCK_40NS/2) fpga_clk = ~fpga_clk; // 25MHz CLOCK
end
//------------------------------------------------------------------
parameter RESET_TIME = 200;
initial
begin
rst_n = 1'b0; // RESET pulse
#RESET_TIME rst_n = 1'b1;
// #RESET_TIME rst_n = 1'b1; //after 1us,RESET over
end
//===============================================================================================data gene
//data clk
parameter CLOCK_56ns = 56;
always @(posedge img_line_sp_100Hz)
begin
img_clk = 1'b0;
repeat(3800) # (CLOCK_56ns/2) img_clk = ~img_clk; // 18MHz CLOCK
end
always @(posedge img_line_sp_100Hz)//-----------------------------------------------img_d_en
begin
img_d_en <= 1'b1;
#(CLOCK_56ns*317 ) img_d_en <= 1'b0;
end
always @(posedge img_line_sp_100Hz)//-----------------------------------------------img_d_en
#(CLOCK_56ns*1900) img_d_en <= 1'b1;
always @(posedge img_line_sp_100Hz)
begin
//-----------------------------------------------Xsync
img_Xsync <= 1'b0;
#(CLOCK_56ns*150 ) img_Xsync <= 1'b1;
#CLOCK_56ns img_Xsync <= 1'b0;
end
//-----------------------------------------------img_input_clk for data generation,not for the input of sdr_test
assign img_input_clk = img_clk & !img_d_en;
//-------------------------------------------------------------------------------------------------data input
reg flg_r;
reg [7:0]send_data_r;
always @(negedge img_input_clk or negedge rst_n)
if(!rst_n)
send_data_r <= 8'd0;
else
send_data_r <=send_data_r+8'd1;
assign {img_d7,img_d6,img_d5,img_d4,img_d3,img_d2,img_d1,img_d0} = send_data_r;
// img_fifo_input_clk
//------------------------------------------------------------------------------------------------img data task
//==============================================================================================spi ctrl
parameter BPS_115200 = 8681; //8681?115200????
parameter DELAY_TIME = 200;
integer i;
reg [7:0]test_data_232;
initial
begin
rs232_rx = 1'b1;
#DELAY_TIME test_data_232 = 16'h72;
transmit_data_232(test_data_232);
# (BPS_115200*15); //delay 1 unit transmit time
test_data_232 = 16'h02;
transmit_data_232(test_data_232);
# (BPS_115200*15); //delay 1 unit transmit time
end
//----------------------------rcv data task
task transmit_data_232;
input[7:0] SEND_DATA_232;
begin
rs232_rx = 1'b1; //RESET rs232_rx
# BPS_115200 rs232_rx = 1'b0; // transmit START bit
$display ("write data: %x\n",SEND_DATA_232);
for(i=0;i<8;i=i+1) //transmit DATA byte
# BPS_115200 rs232_rx = SEND_DATA_232;
# BPS_115200 rs232_rx = 1'b0; // transmit STOP bit
# BPS_115200 rs232_rx = 1'b1; // bus IDLE
end
endtask
//===============================================================================================instance
sdr_test sdr_test(
//data in
.fpga_clk(fpga_clk),
.key3_rst_n(rst_n),//key1
//
//.img_fifo_input_clk(img_fifo_input_clk), //output signal for verification
.img_clk(img_clk), //scope of img_clk is bigger than img_input_clk
.img_d0(img_d0),
.img_d1(img_d1),
.img_d2(img_d2),
.img_d3(img_d3),
.img_d4(img_d4),
.img_d5(img_d5),
.img_d6(img_d6),
.img_d7(img_d7),
.img_d_en(img_d_en),//
.img_Xsync(img_Xsync),
.img_lr_sel(img_lr_sel),
.img_line_sp_100Hz(img_line_sp_100Hz),
.img_ir_sensor(img_ir_sensor),
//rs232
.rs232_tx(rs232_tx),
.rs232_rx(rs232_rx),
/*
sdram_clk(),
sdram_cke(),
sdram_cs_n(),
sdram_ras_n(),
sdram_cas_n(),
sdram_we_n(),
sdram_ba(),
sdram_addr(),
sdram_udqm(),
sdram_ldqm(),
sdram_data(),
*/
//state change
.img_state0(img_state0),
.img_state1(img_state1),
.img_state_trg(img_state_trg),
//serial command
.img_spi_sclk(img_spi_sclk),
.img_spi_en(img_spi_en),
.img_spi_mosi(img_spi_mosi),
//test command
//.test_sig1(test_sig1),
//.test_sig2(test_sig2),
//.test_flg3(test_flg3),
// cmd_coming_sig
.clk_100m(clk_100m)
);
endmodule
/////////////////////////////////////////////////////////////////////////////////////////
第二个文件 top model
`timescale 1ns / 1ps
module sdr_test(
//data in
fpga_clk,
key3_rst_n,//key1
//
// img_fifo_input_clk,
img_clk,
img_d0,
img_d1,
img_d2,
img_d3,
img_d4,
img_d5,
img_d6,
img_d7,
img_d_en,
img_Xsync,
img_lr_sel,
img_line_sp_100Hz,
img_ir_sensor,
//rs232
rs232_tx,
rs232_rx,
/*
sdram_clk,
sdram_cke,
sdram_cs_n,
sdram_ras_n,
sdram_cas_n,
sdram_we_n,
sdram_ba,
sdram_addr,
sdram_udqm,
sdram_ldqm,
sdram_data,
*/
//state change
img_state0,
img_state1,
img_state_trg,
//serial command
img_spi_sclk,
img_spi_en,
img_spi_mosi,
//test command
test_sig1,
test_sig2,
test_flg3,
// cmd_coming_sig
clk_100m
);
//================================================================
input fpga_clk; //ç³»ç»æ¶éï¼25MHz
//ç³»ç»æ§å¶ç¸å
³ä¿¡å·æ¥å£
wire clk_25m; //PLLè¾åº25MHzæ¶é
output clk_100m; //PLLè¾åº100MHzæ¶é
//wire clk_18m;
//ä¾åç³»ç»å¤ä½ä¿¡å·åPLLæ§å¶æ¨¡å=======================================
input key3_rst_n;
output img_line_sp_100Hz;
wire clk_1m;
sys_ctrl uut_sysctrl(
.clk(fpga_clk),
.rst_n(key3_rst_n),
.clk_25m(clk_25m),
.clk_1m(clk_1m),
.clk_100m(clk_100m),
.sdram_clk(sdram_clk)
);
//------------------------------------------------
input img_clk;
input img_d0;
input img_d1;
input img_d2;
input img_d3;
input img_d4;
input img_d5;
input img_d6;
input img_d7;
input img_d_en;
input img_Xsync;
output img_lr_sel;
wire img_wrf_wrreq;
wire line_ch_flg;
wire get_one_data_flg;
wire [15:0]img_wrf_din;
datagene datagene_inst(
//input
.img_clk(img_clk),
.rst_n(key3_rst_n),
.img_d0(img_d0),
.img_d1(img_d1),
.img_d2(img_d2),
.img_d3(img_d3),
.img_d4(img_d4),
.img_d5(img_d5),
.img_d6(img_d6),
.img_d7(img_d7),
.img_d_en(img_d_en),
.Xsync(img_Xsync),
//
.wrf_din(img_wrf_din),
.wrf_wrreq(img_wrf_wrreq),
//
.line_ch_flg(line_ch_flg),
.get_one_data_flg(get_one_data_flg)
);
assign img_lr_sel = 1'b1;
//ä¾å串å£æ°æ®åéæ§å¶æ¨¡å
//------------------------------------------------
//======================================================================================================
wire img_fifo_input_clk;//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
//wire clk_25m;
wire img_rdf_rdreq;
wire [15:0]img_rdf_dout;
//-------------------------------------
wire [10:0]img_wrusedw_sig;
wire img_wrempty_sig;
wire img_wrfull_sig;
wire [10:0]img_rdusedw_sig;
wire img_rdempty_sig;
wire img_rdfull_sig ;
//img fifo output
wire img_fifo_o_clk;
wire [15:0]img_fifo_o_data;
wire img_fifo_o_rdy;
wire img_fifo_o_req;
// uart fifo output
wire [15:0]uart_fifo_o_data;
wire uart_fifo_o_rdy;
wire uart_fifo_o_req;
wire uart_fifo_tx_start;
wire neg_wrack;
wire [15:0]sys_data_out; //sdramæ°æ®è¯»åºç¼åFIFOè¾å
¥æ°æ®æ»çº¿
wire [7:0]tx_data; //å¾
åéæ°æ®
wire tx_start;
wire rdreq_t;
assign img_fifo_input_clk = img_clk && ~img_d_en;
fifo_ctrl fifo_ctrl_inst(
.rst_n (key3_rst_n),
.img_clk (img_fifo_input_clk),
.img_wrf_wrreq (img_wrf_wrreq),
.img_wrf_din (img_wrf_din),
.clk_100m (clk_25m),
.img_rdf_rdreq (rdreq_t),
.img_rdf_dout (tx_data),
.sdram_wr_req (tx_start), //---------------------------------
//--------------------------------------
.uart_wr_clk(clk_100m),
.uart_wrreq(neg_rdack),
.uart_wr_data(sys_data_out),
.sdram_rd_req(),
//
.uart_rdclk(clk_25m),
.uart_rdreq(uart_fifo_o_req),
.uart_q (uart_fifo_o_data),
.uart_fifo_tx_start(uart_fifo_tx_start)
);
//ä¾å模æåå
¥æ°æ®å°sdram模å====================================
wire [21:0]moni_addr;
wire addr_rd_flg;
//ä¾åSDRAMå°è£
æ§å¶æ¨¡å=======================================
// SDRAMçå°è£
æ¥å£
wire sdram_wr_req; //ç³»ç»åSDRAM请æ±ä¿¡å·
wire sdram_rd_req; //ç³»ç»è¯»SDRAM请æ±ä¿¡å·
wire sdram_wr_ack; //ç³»ç»åSDRAMååºä¿¡å·,ä½ä¸ºwrFIFOçè¾åºææä¿¡å·
wire sdram_rd_ack; //ç³»ç»è¯»SDRAMååºä¿¡å·,ä½ä¸ºrdFIFOçè¾åææä¿¡å·
//wire[21:0] sys_addr; //读åSDRAMæ¶å°åæåå¨ï¼(bit21-20)L-Bankå°å:(bit19-8)为è¡å°åï¼(bit7-0)为åå°å
wire [15:0]sys_data_in; //åSDRAMæ¶æ°æ®æåå¨
wire sdram_busy; // SDRAMå¿æ å¿ï¼é«è¡¨ç¤ºSDRAMå¤äºå·¥ä½ä¸
wire sys_dout_rdy; // SDRAMæ°æ®è¾åºå®ææ å¿
//=======================================================
wire rtn;
output img_state0;
output img_state1;
output img_state_trg;
output img_spi_sclk;
output img_spi_en;
output img_spi_mosi;
input img_ir_sensor;
//------------------------------------------------
output test_sig1;
output test_sig2;
//cmd ctrl interface
wire cmd_coming_sig;
wire rd_cmd_sig;
//uart output interface
//232 interface
output rs232_tx;
input rs232_rx;
wire [15:0]rx_data;
//----------------------------------------------------
uart_ctrl uart_ctrl(
.key3_rst_n(key3_rst_n),
.clk_25m(clk_25m),
.clk_1m(clk_1m),
.clk_100m(clk_100m),
//cmd ctrl interface-----------------------------
.rx_data(rx_data),
//data output interface-------------------------
.tx_data(tx_data), //å¾
åéæ°æ®
.tx_start(tx_start),
.rdreq_t(rdreq_t),
//232 interface--------------------------------
.rs232_tx(rs232_tx),
.rs232_rx(rs232_rx),
.test_flg3(test_flg3),
//spi-------------------------------------------
.sclk(img_spi_sclk),
.csb(img_spi_en),
.mosi(img_spi_mosi),
//state change----------------------------------
.state0(img_state0),
.state1(img_state1),
.state_trg(img_state_trg),
//data out ---------------------------------------
.line_sp(img_line_sp_100Hz),
.beginflg(beginflg),
.ir_sensor(img_ir_sensor),
.line_ch_flg(line_ch_flg),
.get_one_data_flg(get_one_data_flg)
);
//
output test_flg3;
//change the line
//output interface
/*
img_fifo_o_clk
img_fifo_o_req
img_fifo_o_data
img_fifo_o_rdy
uart_fifo_o_clk
uart_fifo_o_req
uart_fifo_o_data
uart_fifo_o_rdy
*/
//img_fifo interface
/*
assign img_fifo_o_req = (line_ch_flg == 1'b1) ? sdram_wr_ack :rdreq_t;
assign sys_data_in = (line_ch_flg == 1'b1) ? img_fifo_o_data :1'b0 ;
assign img_fifo_o_clk = (line_ch_flg == 1'b1) ? clk_100m :clk_25m;
assign tx_data = (line_ch_flg == 1'b1) ? uart_fifo_o_data[7:0] :img_fifo_o_data[7:0];
assign tx_start = (line_ch_flg == 1'b1) ? uart_fifo_tx_start :img_fifo_o_rdy;
assign sdram_wr_req = (line_ch_flg == 1'b1) ? img_fifo_o_rdy :1'b0 ;
assign uart_fifo_o_req= (line_ch_flg == 1'b1) ? rdreq_t :1'b0 ;
*/
/*
assign img_fifo_o_req = rdreq_t;
assign sys_data_in = 1'b0 ;
assign img_fifo_o_clk = clk_25m;
assign tx_data = img_fifo_o_data[7:0];
assign tx_start = img_fifo_o_rdy ;
assign sdram_wr_req = 1'b0 ;
assign uart_fifo_o_req= 1'b0 ;
*/
//sdram interface
endmodule
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
第三个文件 fifo 控制
`timescale 1ns / 1ps
module fifo_ctrl(
rst_n,
img_clk,
img_wrf_wrreq,
img_wrf_din,
clk_100m,
img_rdf_rdreq,
img_rdf_dout,
sdram_wr_req,
//-------------------------------------------
uart_wr_clk,
uart_wrreq,
uart_wr_data,
sdram_rd_req,
uart_rdclk,
uart_rdreq,
uart_q,
uart_fifo_tx_start
);
//======================================================
input rst_n;
input img_clk;
input img_wrf_wrreq;
input [15:0]img_wrf_din;
input clk_100m;
input img_rdf_rdreq;
output [15:0]img_rdf_dout;
wire img_rdempty_sig ;
wire img_rdfull_sig ;
wire [10:0]img_rdusedw_sig;
wire img_wrempty_sig ;
wire img_wrfull_sig ;
wire [10:0]img_wrusedw_sig;
reg aclr_sig_r;
wire aclr_sig;
//output tx_start;
output sdram_wr_req;
reg sdram_wr_reqr;
always @(posedge clk_100m)
if(img_rdempty_sig ==1'b0)
sdram_wr_reqr <= 1'b1; //å¯å¨ åéæ°æ®;
else
sdram_wr_reqr <= 1'b0;
assign sdram_wr_req =sdram_wr_reqr ;
imgfifo imgfifo_inst (
.wrclk ( img_clk ),
.wrreq ( img_wrf_wrreq ),
.data ( img_wrf_din ),
.rdclk ( clk_100m ),
.rdreq ( img_rdf_rdreq ),
.q ( img_rdf_dout ),
.rdempty(img_rdempty_sig ),
.rdfull (img_rdfull_sig ),
.rdusedw(img_rdusedw_sig ),
.wrempty(img_wrempty_sig ),
.wrfull (img_wrfull_sig ),
.wrusedw(img_wrusedw_sig ),//????????????????????????????????
.aclr ( aclr_sig_r )
);
//=====================================================================================================================================
input uart_wr_clk;
input uart_wrreq;
input [15:0]uart_wr_data;
input uart_rdclk;
input uart_rdreq;
output [15:0]uart_q;
wire uart_rdempty;
wire uart_rdfull;
wire [8:0]uart_rdusedw;//..................................
wire uart_wrempty;
wire uart_wrfull;
wire [8:0]uart_wrusedw;
reg uart_aclr_sigr;//read side
output sdram_rd_req;
reg sdram_rd_reqr;
always @(posedge uart_rdclk )
if(uart_rdempty == 1'b1 && sdram_wr_reqr == 1'b0)
sdram_rd_reqr <= 1'b1;
else if(uart_wrusedw >= 9'd256)
sdram_rd_reqr <= 1'b0;
assign sdram_rd_req = sdram_rd_reqr ;//& syswr_done;
//uart rd ctrl
output uart_fifo_tx_start;
assign uart_fifo_tx_start = ~uart_rdempty;
//output for request uart
/*
uartfifo uartfifo_inst (
.wrclk ( uart_wr_clk ),
.wrreq ( uart_wrreq ),
.data ( uart_wr_data),
.rdclk ( uart_rdclk ),
.rdreq ( uart_rdreq ),
.q ( uart_q ),
.rdempty(uart_rdempty ),
.rdfull (uart_rdfull ),
.rdusedw(uart_rdusedw ),
.wrempty(uart_wrempty ),
.wrfull (uart_wrfull ),
.wrusedw(uart_wrusedw ),
.aclr (uart_aclr_sigr)
);
*/
endmodule
///////////////////////////////////////////////////////////////////////////////////
第四个文件,添加fifo的时候 quartus ii 自动生成的fifo代码
// megafunction wizard: %FIFO%
// GENERATION: STANDARD
// VERSION: WM1.0
// MODULE: dcfifo
// ============================================================
// File Name: imgfifo.v
// Megafunction Name(s):
// dcfifo
//
// Simulation Library Files(s):
// altera_mf
// ============================================================
// ************************************************************
// THIS IS A WIZARD-GENERATED FILE. DO NOT EDIT THIS FILE!
//
// 12.0 Build 178 05/31/2012 SJ Full Version
// ************************************************************
//Copyright (C) 1991-2012 Altera Corporation
//Your use of Altera Corporation's design tools, logic functions
//and other software and tools, and its AMPP partner logic
//functions, and any output files from any of the foregoing
//(including device programming or simulation files), and any
//associated documentation or information are expressly subject
//to the terms and conditions of the Altera Program License
//Subscription Agreement, Altera MegaCore Function License
//Agreement, or other applicable license agreement, including,
//without limitation, that your use is for the sole purpose of
//programming logic devices manufactured by Altera and sold by
//Altera or its authorized distributors. Please refer to the
//applicable agreement for further details.
// synopsys translate_off
// synopsys translate_on
`timescale 1 ps / 1 ps
module imgfifo (
aclr,
data,
rdclk,
rdreq,
wrclk,
wrreq,
q,
rdempty,
rdfull,
rdusedw,
wrempty,
wrfull,
wrusedw
);
input aclr;
input [15:0] data;
input rdclk;
input rdreq;
input wrclk;
input wrreq;
output [15:0] q;
output rdempty;
output rdfull;
output [10:0] rdusedw;
output wrempty;
output wrfull;
output [10:0] wrusedw;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_off
`endif
tri0 aclr;
`ifndef ALTERA_RESERVED_QIS
// synopsys translate_on
`endif
wire sub_wire0;
wire sub_wire1;
wire [15:0] sub_wire2;
wire sub_wire3;
wire sub_wire4;
wire [10:0] sub_wire5;
wire [10:0] sub_wire6;
wire wrempty = sub_wire0;
wire wrfull = sub_wire1;
wire [15:0] q = sub_wire2[15:0];
wire rdempty = sub_wire3;
wire rdfull = sub_wire4;
wire [10:0] wrusedw = sub_wire5[10:0];
wire [10:0] rdusedw = sub_wire6[10:0];
dcfifo dcfifo_component (
.rdclk (rdclk),
.wrreq (wrreq),
.aclr (aclr),
.data (data),
.rdreq (rdreq),
.wrclk (wrclk),
.wrempty (sub_wire0),
.wrfull (sub_wire1),
.q (sub_wire2),
.rdempty (sub_wire3),
.rdfull (sub_wire4),
.wrusedw (sub_wire5),
.rdusedw (sub_wire6)
);
defparam
dcfifo_component.intended_device_family = "Cyclone IV E",
dcfifo_component.lpm_numwords = 2048,
dcfifo_component.lpm_showahead = "OFF",
dcfifo_component.lpm_type = "dcfifo",
dcfifo_component.lpm_width = 16,
dcfifo_component.lpm_widthu = 11,
dcfifo_component.overflow_checking = "ON",
dcfifo_component.rdsync_delaypipe = 3,
dcfifo_component.read_aclr_synch = "ON",
dcfifo_component.underflow_checking = "ON",
dcfifo_component.use_eab = "ON",
dcfifo_component.write_aclr_synch = "OFF",
dcfifo_component.wrsync_delaypipe = 3;
endmodule
// ============================================================
// CNX file retrieval info
// ============================================================
// Retrieval info: PRIVATE: AlmostEmpty NUMERIC "0"
// Retrieval info: PRIVATE: AlmostEmptyThr NUMERIC "-1"
// Retrieval info: PRIVATE: AlmostFull NUMERIC "0"
// Retrieval info: PRIVATE: AlmostFullThr NUMERIC "-1"
// Retrieval info: PRIVATE: CLOCKS_ARE_SYNCHRONIZED NUMERIC "1"
// Retrieval info: PRIVATE: Clock NUMERIC "4"
// Retrieval info: PRIVATE: Depth NUMERIC "2048"
// Retrieval info: PRIVATE: Empty NUMERIC "1"
// Retrieval info: PRIVATE: Full NUMERIC "1"
// Retrieval info: PRIVATE: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"
// Retrieval info: PRIVATE: LE_BasedFIFO NUMERIC "0"
// Retrieval info: PRIVATE: LegacyRREQ NUMERIC "1"
// Retrieval info: PRIVATE: MAX_DEPTH_BY_9 NUMERIC "0"
// Retrieval info: PRIVATE: OVERFLOW_CHECKING NUMERIC "0"
// Retrieval info: PRIVATE: Optimize NUMERIC "2"
// Retrieval info: PRIVATE: RAM_BLOCK_TYPE NUMERIC "0"
// Retrieval info: PRIVATE: SYNTH_WRAPPER_GEN_POSTFIX STRING "0"
// Retrieval info: PRIVATE: UNDERFLOW_CHECKING NUMERIC "0"
// Retrieval info: PRIVATE: UsedW NUMERIC "1"
// Retrieval info: PRIVATE: Width NUMERIC "16"
// Retrieval info: PRIVATE: dc_aclr NUMERIC "1"
// Retrieval info: PRIVATE: diff_widths NUMERIC "0"
// Retrieval info: PRIVATE: msb_usedw NUMERIC "0"
// Retrieval info: PRIVATE: output_width NUMERIC "16"
// Retrieval info: PRIVATE: rsEmpty NUMERIC "1"
// Retrieval info: PRIVATE: rsFull NUMERIC "1"
// Retrieval info: PRIVATE: rsUsedW NUMERIC "1"
// Retrieval info: PRIVATE: sc_aclr NUMERIC "0"
// Retrieval info: PRIVATE: sc_sclr NUMERIC "0"
// Retrieval info: PRIVATE: wsEmpty NUMERIC "1"
// Retrieval info: PRIVATE: wsFull NUMERIC "1"
// Retrieval info: PRIVATE: wsUsedW NUMERIC "1"
// Retrieval info: LIBRARY: altera_mf altera_mf.altera_mf_components.all
// Retrieval info: CONSTANT: INTENDED_DEVICE_FAMILY STRING "Cyclone IV E"
// Retrieval info: CONSTANT: LPM_NUMWORDS NUMERIC "2048"
// Retrieval info: CONSTANT: LPM_SHOWAHEAD STRING "OFF"
// Retrieval info: CONSTANT: LPM_TYPE STRING "dcfifo"
// Retrieval info: CONSTANT: LPM_WIDTH NUMERIC "16"
// Retrieval info: CONSTANT: LPM_WIDTHU NUMERIC "11"
// Retrieval info: CONSTANT: OVERFLOW_CHECKING STRING "ON"
// Retrieval info: CONSTANT: RDSYNC_DELAYPIPE NUMERIC "3"
// Retrieval info: CONSTANT: READ_ACLR_SYNCH STRING "ON"
// Retrieval info: CONSTANT: UNDERFLOW_CHECKING STRING "ON"
// Retrieval info: CONSTANT: USE_EAB STRING "ON"
// Retrieval info: CONSTANT: WRITE_ACLR_SYNCH STRING "OFF"
// Retrieval info: CONSTANT: WRSYNC_DELAYPIPE NUMERIC "3"
// Retrieval info: USED_PORT: aclr 0 0 0 0 INPUT GND "aclr"
// Retrieval info: USED_PORT: data 0 0 16 0 INPUT NODEFVAL "data[15..0]"
// Retrieval info: USED_PORT: q 0 0 16 0 OUTPUT NODEFVAL "q[15..0]"
// Retrieval info: USED_PORT: rdclk 0 0 0 0 INPUT NODEFVAL "rdclk"
// Retrieval info: USED_PORT: rdempty 0 0 0 0 OUTPUT NODEFVAL "rdempty"
// Retrieval info: USED_PORT: rdfull 0 0 0 0 OUTPUT NODEFVAL "rdfull"
// Retrieval info: USED_PORT: rdreq 0 0 0 0 INPUT NODEFVAL "rdreq"
// Retrieval info: USED_PORT: rdusedw 0 0 11 0 OUTPUT NODEFVAL "rdusedw[10..0]"
// Retrieval info: USED_PORT: wrclk 0 0 0 0 INPUT NODEFVAL "wrclk"
// Retrieval info: USED_PORT: wrempty 0 0 0 0 OUTPUT NODEFVAL "wrempty"
// Retrieval info: USED_PORT: wrfull 0 0 0 0 OUTPUT NODEFVAL "wrfull"
// Retrieval info: USED_PORT: wrreq 0 0 0 0 INPUT NODEFVAL "wrreq"
// Retrieval info: USED_PORT: wrusedw 0 0 11 0 OUTPUT NODEFVAL "wrusedw[10..0]"
// Retrieval info: CONNECT: @aclr 0 0 0 0 aclr 0 0 0 0
// Retrieval info: CONNECT: @data 0 0 16 0 data 0 0 16 0
// Retrieval info: CONNECT: @rdclk 0 0 0 0 rdclk 0 0 0 0
// Retrieval info: CONNECT: @rdreq 0 0 0 0 rdreq 0 0 0 0
// Retrieval info: CONNECT: @wrclk 0 0 0 0 wrclk 0 0 0 0
// Retrieval info: CONNECT: @wrreq 0 0 0 0 wrreq 0 0 0 0
// Retrieval info: CONNECT: q 0 0 16 0 @q 0 0 16 0
// Retrieval info: CONNECT: rdempty 0 0 0 0 @rdempty 0 0 0 0
// Retrieval info: CONNECT: rdfull 0 0 0 0 @rdfull 0 0 0 0
// Retrieval info: CONNECT: rdusedw 0 0 11 0 @rdusedw 0 0 11 0
// Retrieval info: CONNECT: wrempty 0 0 0 0 @wrempty 0 0 0 0
// Retrieval info: CONNECT: wrfull 0 0 0 0 @wrfull 0 0 0 0
// Retrieval info: CONNECT: wrusedw 0 0 11 0 @wrusedw 0 0 11 0
// Retrieval info: GEN_FILE: TYPE_NORMAL imgfifo.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL imgfifo.inc FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL imgfifo.cmp FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL imgfifo.bsf FALSE
// Retrieval info: GEN_FILE: TYPE_NORMAL imgfifo_inst.v TRUE
// Retrieval info: GEN_FILE: TYPE_NORMAL imgfifo_bb.v TRUE
// Retrieval info: LIB_FILE: altera_mf |
|