📄 sramtest.v.bak
字号:
module SRAMtest(
//Host side
CLOCK_50, // 50 MHz
SW,
LEDR,LEDG,KEY,
HEX0,HEX1,HEX2,HEX3,
//SRAM side
SRAM_ADDR,
SRAM_UB_N,
SRAM_LB_N,
SRAM_WE_N,
SRAM_CE_N,
SRAM_OE_N,
SRAM_DQ
);
input [3:0] KEY; //写数据控制,用KEY[0],低电平有效
input CLOCK_50; // 50 MHz
input [17:0] SW; //低八位控制数据输入,高10位控制地址输入
output [6:0] HEX0,HEX1,HEX2,HEX3;//数据用七段数码管显示
output [17:0] LEDR; //地址低八位指示灯
output [7:0] LEDG; //数据低八位指示灯
inout [15:0] SRAM_DQ;
output [17:0] SRAM_ADDR;
output SRAM_UB_N,
SRAM_LB_N,
SRAM_WE_N,
SRAM_CE_N,
SRAM_OE_N;
wire DLY_RST;//复位信号
reg [15:0] iDATA;
wire [15:0] oDATA; //本程序中不起作用
reg [17:0] iADDR;
reg iWE_N,iOE_N;
wire iCE_N,iCLK;
wire [1:0] iBE_N;
reg [15:0] temp_DATA; //七段数码管显示数据寄存器
reg [1:0] ST; //状态寄存器
reg [1:0] counter; //分频计数器
assign iCE_N=1'b0; //选通信号
assign iBE_N=2'd0; //高字节和低字节数据掩码信号
assign LEDR[17:8]=SW[17:8]; //地址输入
assign LEDG[7:0]=SW[7:0]; //数据输入
always @(posedge CLOCK_50,negedge DLY_RST)
begin
if(!DLY_RST)//初始化
begin
iWE_N<=1;
iOE_N<=0;
iADDR<=0;
iDATA<=0;
ST<=0;
counter<=0;
end
else
begin
case(ST) //KEY[0]!=0时,状态机处于读数据状态
2'd0: //write
begin
if(!KEY[0]) //KEY[0]=0时写入
begin
iWE_N<=0;
iADDR<={{8{1'b0}},SW[17:8]};
iDATA<={{7{1'b0}},SW[7:0]};
temp_DATA<=SRAM_DQ;
ST<=1;
end
else
ST<=2;
end
2'd1: //延时2个周期
begin
if(counter<2)
counter<=counter+1;
else
begin
counter<=0;
ST<=2;
end
end
2'd2,
2'd3:
begin //read
iWE_N<=1;
iOE_N<=0;
iADDR<={{8{1'b0}},SW[17:8]};
temp_DATA<=oDATA;
ST<=0;
end
endcase
end
end
Reset_Delay r0 ( .iCLK(CLOCK_50),.oRESET(DLY_RST) ); //复位
SRAM_16Bit_512K the_SRAM_16Bit_512K //SRAM controller
(
.SRAM_ADDR (SRAM_ADDR),
.SRAM_CE_N (SRAM_CE_N),
.SRAM_DQ (SRAM_DQ),
.SRAM_LB_N (SRAM_LB_N),
.SRAM_OE_N (SRAM_OE_N),
.SRAM_UB_N (SRAM_UB_N),
.SRAM_WE_N (SRAM_WE_N),
.iADDR (iADDR),
.iBE_N (iBE_N),
.iCE_N (iCE_N),
.iCLK (iCLK),
.iDATA (iDATA),
.iOE_N (iOE_N),
.iWE_N (iWE_N),
.oDATA (oDATA)
);
//数码管显示
SEG7_LUT_4 seg_4 ( .oSEG0(HEX0),.oSEG1(HEX1),.oSEG2(HEX2),.oSEG3(HEX3),
.iDIG(temp_DATA),.iRESET(DLY_RST),.iCLK(CLOCK_50));
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -