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

📄 sd_state.v

📁 8读8写SDRAM verilog 程序
💻 V
字号:
`timescale 1 ns /  100 ps
module sd_state(
                clk,
                rst_l,

                fresh_req,
                load_req,
				charge_req,
				data_req,	
					
				idle_cycle,		
				load_cycle,	
				data_cycle, 		
				fresh_cycle, 		
				charge_cycle,
				
				state_cntr
			);
//--------------------------------------------------------------------
// inputs
input           clk;
input           rst_l;

input           fresh_req;
input           load_req;
input           charge_req;
input			data_req;

output			idle_cycle;
output			load_cycle;	
output			data_cycle;		
output			fresh_cycle;	
output			charge_cycle;

input[7:0]		state_cntr;

//--------------------------------------------------------------------
reg    [4:0]    sdram_cycle;

assign   {	
			charge_cycle,
			fresh_cycle,
			data_cycle,	
			load_cycle,
			idle_cycle			
				}=sdram_cycle[4:0];	
//--------------------------------------------------------------------
// state parameters
parameter 	idle 		= 5'b00001;
parameter	load		= 5'b00010;
parameter 	data 		= 5'b00100;
parameter 	fresh 		= 5'b01000;
parameter 	charge		= 5'b10000;

//--------------------------------------------------------------------
// state machine
reg		charge_on;
always @(posedge clk or negedge rst_l)
   	if (!rst_l)begin
      	sdram_cycle <= #1    idle;
		charge_on<= #1  1'b0;
   	end
   	else 
		case (sdram_cycle)
      	idle :
		            if (charge_req || charge_on)
                     	sdram_cycle <= #1    charge;
					else if (fresh_req)
              			sdram_cycle <= #1    fresh;
                  	else if (load_req)
                     	sdram_cycle <= #1    load;
                  	else if(data_req)
                     	sdram_cycle <= #1    data;                     
      	load : 
					if (state_cntr[3])
                     	sdram_cycle <= #1    idle;
      	data : 
					if (!data_req)begin
						charge_on<= #1  1'b1;
                     	sdram_cycle <= #1    idle;	
					end
					else
						charge_on<= #1  1'b0;
      	charge:		begin
					charge_on<= #1  1'b0;
					if(state_cntr[3])
						sdram_cycle <= #1    idle;
		end
      	fresh : 
					if (state_cntr[3])
                     	sdram_cycle <= #1    idle;
      	default:    
					sdram_cycle <= #1    idle;
      	endcase
//-------------------------------------------------------------------
endmodule      

⌨️ 快捷键说明

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