⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dsp_emif_if.v

📁 fpga开发的程序
💻 V
字号:
module DSP_EMIF_if	(	i_rst_n,						i_clk_32fc,						i_dsp_clk,i_dsp_addr,i_dsp_din,o_dsp_dout,i_dsp_aoe_n,i_dsp_awe_n,i_dsp_ace_n,						o_mem1_cs,o_mem2_cs,o_we,o_rd,i_mem1_din,i_mem2_din,						o_SPI_choice,o_control					);input			i_rst_n;input			i_clk_32fc;input			i_dsp_clk;input[15:0]		i_dsp_addr;input[15:0]		i_dsp_din;output[15:0]	o_dsp_dout;input			i_dsp_aoe_n;input			i_dsp_awe_n;input			i_dsp_ace_n;output			o_mem1_cs;output			o_mem2_cs;input[15:0]		i_mem1_din;input[15:0]		i_mem2_din;output			o_we;output			o_rd;output[1:0]		o_SPI_choice;output[15:0]	o_control;//////////////////////////////////////////////wire			i_rst_n;wire			i_clk_32fc;wire			i_dsp_clk;wire[15:0]		i_dsp_addr;wire[15:0]		i_dsp_din;wire[15:0]		o_dsp_dout;wire			i_dsp_aoe_n;wire			i_dsp_awe_n;wire			i_dsp_ace_n;wire			o_mem1_cs;wire			o_mem2_cs;wire[15:0]		i_mem1_din;wire[15:0]		i_mem2_din;wire			o_we;wire			o_rd;reg[1:0]		o_SPI_choice;reg[15:0]		o_control;//--------------------------------------------------wire			reg_cs;reg[1:0]		spi_choice;reg[15:0]		control;reg[15:0]		reg_data;//address mapingassign o_mem1_cs =(i_dsp_ace_n==1'b0 && i_dsp_addr[15:10] == 6'b000000)? 1'b1 : 1'b0;assign o_mem2_cs =(i_dsp_ace_n==1'b0 && (i_dsp_addr[15:10] ==6'b000001))? 1'b1 : 1'b0;assign reg_cs =(i_dsp_ace_n==1'b0 && i_dsp_addr[15:10] == 6'b000011)? 1'b1 : 1'b0;assign o_we = ~i_dsp_awe_n;assign o_rd = ~i_dsp_aoe_n;//dsp output choiceassign o_dsp_dout[15:0] = (o_rd==1'b1 && o_mem1_cs==1'b1)? i_mem1_din[15:0] : 16'hzzzz;assign o_dsp_dout[15:0] = (o_rd==1'b1 && o_mem2_cs==1'b1)? i_mem2_din[15:0] : 16'hzzzz;assign o_dsp_dout[15:0] = (o_rd==1'b1 && reg_cs==1'b1)? reg_data[15:0] : 16'hzzzz;//reg w/r operatealways@(negedge i_rst_n or posedge i_dsp_clk)begin	if (i_rst_n==1'b0)	begin		spi_choice[1:0]<=2'b00;		control[15:0]<=16'h0000;	end	else	begin		if (reg_cs==1'b1 || o_we==1'b1)		begin			if(i_dsp_addr[9:0]==10'h000)			begin				spi_choice[1:0]<=i_dsp_din[1:0];			end			if(i_dsp_addr[9:0]==10'h001)			begin				control[15:0]<=i_dsp_din[15:0];			end		end	endendalways@(negedge i_rst_n or posedge i_clk_32fc)begin	if (i_rst_n==1'b0)	begin		o_SPI_choice[1:0]<=2'b00;		o_control[15:0]<=16'h0000;	end	else	begin		if(reg_cs==1'b0)		begin			o_SPI_choice[1:0]<=spi_choice[1:0];			o_control[15:0]<=control[15:0];		end	endendalways@(negedge i_rst_n or posedge i_dsp_clk)begin	if (i_rst_n==1'b0)	begin		reg_data[15:0]<=16'h0000;	end	else	begin		if (reg_cs==1'b1 || o_rd==1'b1)		begin			case(i_dsp_addr[9:0])				10'h000:	reg_data[15:0]<={14'h0000,spi_choice[1:0]};				10'h001:	reg_data[15:0]<=control[15:0];				default:	reg_data[15:0]<=16'h0000;			endcase		end	endendendmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -