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

📄 control_slave_interface.v

📁 DE1上avalon总线挂接LCD控制器示例
💻 V
字号:
module control_slave_interface(
						// avalon slave interface
						slave_reset_n,
			//			slave_irq,
						slave_clk,
						slave_chipselect,
						slave_write_n,
						slave_read_n,
						slave_address,
						slave_writedata,
						slave_readdata,	
						// control output
						control_reg,
						dma_source_reg,
						dma_modules_reg,
						dma_current_reg,
					);
input			slave_reset_n;
input			slave_clk;
input			slave_chipselect;
input			slave_write_n;
input			slave_read_n;
input	[ 1:0]	slave_address;
input	[31:0]	slave_writedata;
output	[31:0]	slave_readdata;
//output			slave_irq;

output	[31:0]	control_reg;
output	[31:0]	dma_source_reg;
output	[31:0]	dma_modules_reg;
input	[31:0]	dma_current_reg;

reg		[31:0]	control_reg;
reg		[31:0]	dma_source_reg;
reg		[31:0]	dma_modules_reg;
reg		[31:0]	slave_readdata;

/* ---------------------------------------------------------------------------------
slave interface
--------------------------------------------------------------------------------- */
always @(posedge slave_clk or negedge slave_reset_n)
begin
	if(slave_reset_n == 0)
	begin
		control_reg				<=	0;
		dma_source_reg			<=	0;
		dma_modules_reg			<=	0;
	end
	else if(slave_chipselect && ~slave_write_n)
	begin
		case(slave_address)
		2'b00:	control_reg				<=	slave_writedata;	
		2'b01:	dma_source_reg			<=	slave_writedata;
		2'b10:	dma_modules_reg			<=	slave_writedata;
		endcase
	end 
end

always @(posedge slave_clk or negedge slave_reset_n)
begin
	if(slave_reset_n == 0)
	begin
		slave_readdata	<=	0;
	end
	else if(slave_chipselect && ~slave_read_n)
	begin
		case(slave_address)
		2'b00:	slave_readdata	<=	control_reg;
		2'b01:	slave_readdata	<=	dma_source_reg;
		2'b10:	slave_readdata	<=	dma_modules_reg;
		2'b11:	slave_readdata	<=	dma_current_reg;
		endcase
	end
end
endmodule 

⌨️ 快捷键说明

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