FPGA------------ SRIO通信(1)发送

一、系统结构

        分为四个模块。外部控制单元,SWR_fifo,AXI_fifo,SRIO IP核。之间的主要连线关系如图所示。

 

二、外部控制单元。

        此单元用来产生需要发送的数据data以及写使能信号wen。主要产生的过程比较简单。这里发送720*576byte的数据,由于SRIO是64bit的数据  因此,将数据进行组合发送,共发送64bit的数据个数为 720*576/8 = 51480

always @(posedge sys_clk)
    begin
	if (~sys_rstn) 
	    begin
		k7_srio_dma_wren <= 1'b0;
		cnt_data	 <= 16'd0;
	    end 
	else 
	    begin
		if ((cnt_40ms >= 24'd1) && (cnt_40ms <= 24'd51840)) 
		    begin		// 720x576=414720 byte
			k7_srio_dma_wren	<= 1'b1;
			cnt_data		<= cnt_data + 1; //发送的数据++
		    end 
		else 
		    begin
			k7_srio_dma_wren <= 1'b0;
			cnt_data	 <= 16'd0;
		    end
	    end
	end

assign	 k7_srio_dma_data = {4{cnt_data[7:0], cnt_data[15:8]}}; //64bit   SRIO要发送的数据

三、SWR_fifo

        用于缓存输入的数据,在状态机进入SWRITE之后,读取出数据。

fwft_fifo_w64	swr_fifo
(
	.rst					(inner_log_rst	),
	.wr_clk					(user_dma_clk	),
	.wr_en					(user_dma_en	),
	.din					(user_dma_data	),
			
	.prog_full_thresh		        (9'd470		),
	.prog_full				(user_dma_full	),
	.full					(		),
			
	.rd_clk					(log_clk	),
	.rd_en					(dma_read_en	),  //swr fifo读使能
	.dout					(dma_data_out	),  //swr fifo读数据
	.empty					(user_dma_emtpy),
	.prog_empty_thresh	                (9'd29		),	
	.prog_empty				(dma_fifo_empty),
	.rd_data_count			        (		)	
);

四、AXI_fifo

        SWR_fifo输出的数据dma_data_out在传输过程中赋值给ireq_tdata。ireq_tvalid, ireq_tdata, ireq_tlast再组合成64bit的数据axi_fifo_din输入fifo

assign	axi_fifo_din	= {ireq_tvalid, ireq_tdata, ireq_tlast}; //axi fifo输入数据  ireq_tdata位主要部分 是将要发送的数据
// ================================== 发送数据的fifo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阳光非宅男

你的鼓励是我最大的肯定

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值