FPGA图像处理项目(二)--FIFO FFT RAM

本文介绍了FPGA图像处理项目中的优化,使用simple dual port RAM实现FFT处理后数据的转置,以适应列式运算。通过IP核的控制信号,增强了代码的扩展性和可维护性,利用fft_dv信号控制RAM的读写操作。

      今天下午将项目又推荐了一些,对之前的代码进行了下改进,使得代码更具扩展性与可维护性吧。

     项目中引入了simple dual port ram,功能是对FFT处理后的数据进行转置,即按列将数据再送入FFT进行运算。

     代码完全通过IP核自带控制信号进行激励与控制,使得代码的扩展性得到了加强。这里通过fft_dv来控制ram的写使能与读使能。


主模块:

module fft2d_16_top(
	input 			clk,
	input 			rst_n,
	
	input			fifo_wr_en,
	input 	[63:0] 	srio_wr_data,
	output	[31:0]	srio_rd_data_re,
	output	[31:0]	srio_rd_data_im,
	
	output  [31:0]	test_re,
	output	[31:0]	test_im,
	output			test_fft_rfd,
	output			test_fft_dv,
	output  [4:0]   test_state,
	output  wire [63:0] test_count,
	/*move*/
	output reg[7:0] ram1_addra,
	output reg[7:0] ram1_addrb,
	output reg[31:0]  ram1_dina_re,
	output reg[31:0]  ram1_dina_im,


	output reg		 ram1_ena,
	output reg 		 ram1_enb
    );

	parameter 	S_IDLE			=	5'h0,
				S_FFT_START		=	5'h1,
				S_FFT_DATA		=	5'h2,
				S_FFT_START2	=   5'h3;				
	
	wire [4:0]	s_state;
			
	
	/*FFT 参数*/
	reg				fft_start;//input
	reg				fft_fwd_inv;
	reg				fft_fwd_inv_we;
	
	wire			fft_rfd;//output
	wire			fft_dv;
	
	wire	[3:0]	fft_xn_index;
	wire	[31:0]	fft_xn_re;
	wire	[31:0]	fft_xn_im;
	wire	[3:0]	fft_xk_index;
	wire    [31:0]	fft_xk_re;
	wire	[31:0]	fft_xk_im;
	wire	[4:0]	fft_xk_re_ex;
	wire	[4:0]	fft_xk_im_ex;
	
	/*fifo recv*/
	reg				fifo_rd_en;
	wire			fifo_recv_full;
	wire			fifo_recv_alempty;
	wire	[7:0]	fifo_data_count;
AddrConGen  addrConGen (
	.clk(clk),
	.rst_n(rst_n),
	.fifo_recv_full(fifo_recv_full),
	.fifo_data_count(fifo_data_count),
	.fft_dv(fft_dv),
	.s_state(s_state),
	.count(test_count)
);

fifo_i64_o64 recv_fifo (
  .clk(clk), // input clk
  .r
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值