|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
同步sram读写问题
module sram_control(reset,clock1,datal,datah,address,
oe_n,ce_n,bwe_n,led_0,state,wel_n,
weh_n,mode,adsc_n,adsp_n,adv_n,data_out);
input clock1; //sram的时钟
input reset; //复位信号
input state; //读写控制信号
inout[8:0] datal; //数据低9位
inout[8:0] datah; //数据高9位
output[17:0] address; //地址信号
output oe_n; //输出使能
output ce_n; //片选信号
output bwe_n; //字节写使能
output wel_n; //低八位写使能
output weh_n; //高八位写使能
output mode; //突发顺序选择
output adsc_n; //控制器地址选通
output adsp_n; //处理器地址选通
output adv_n; //突发传输选择
output led_0; //存满标志
output[17:0] data_out; //引致led观测是否与写入数据一致
reg ce_n,bwe_n,wel_n,weh_n,oe_n,mode,adsc_n,adsp_n,adv_n,led_0;
reg[17:0] address;
reg[17:0] data; //待写入数据
wire[8:0] datal,datah;
parameter write=1'b1;
parameter read =1'b0;
[email=always@ (posedge]always @ (posedge[/email] clock1 or negedge reset)
if(!reset)
begin
address<=18'b00_0000_0000_0000_0000;
data<=18'b00_0000_0000_0000_0000;
ce_n<=1'b0;
bwe_n<=1'b1;
oe_n<=1'b1;
mode<=1'b0;
adv_n<=1'b1;
adsp_n<=1'b1;
led_0<=1'b1;
end
else
case(state)
write: begin //写状态
if(address==18'b11_1111_1111_1111_1111)//刚好写满
begin
ce_n<=1'b0;
led_0<=1'b0;
address<=18'b00_0000_0000_0000_0000;
bwe_n<=1'b1;
wel_n<=1'b1;
weh_n<=1'b1;
oe_n<=1'b1;
end
else if((address<18'b11_1111_1111_1111_1111)&&(led_0==1))//写的过程
begin
if(address[0]==0) //偶地址写入AA
begin
ce_n<=1'b0;
oe_n<=1'b1;
bwe_n<=1'b0;
wel_n<=1'b0;
weh_n<=1'b0;
adsc_n<=1'b0;
address<=address+1'b1;
data<=18'b01_0001_0000_1000_1000;
end
else //奇地址写入CC
begin
ce_n<=1'b0;
oe_n<=1'b1;
bwe_n<=1'b0;
wel_n<=1'b0;
weh_n<=1'b0;
adsc_n<=1'b0;
address<=address+1'b1;
data<=18'b01_1000_1100_1100_0110;
end
end
else //等待读
begin
ce_n<=1'b0;
bwe_n<=1'b1;
wel_n<=1'b1;
weh_n<=1'b1;
oe_n<=1'b1;
led_0<=1'b0;
end
end
read: begin //读状态
led_0<=1'b1;
ce_n<=1'b0;
bwe_n<=1'b1;
wel_n<=1'b1;
weh_n<=1'b1;
oe_n<=1'b0;
adsc_n<=1'b0;
address<=address+1'b1;
end
endcase
assign datal=oe_n?data[8:0]:9'bz;
assign datah=oe_n?data[17:9]:9'bz;
assign data_out={datah,datal};
endmodule
首先我不知道 同步sram的控制信号这样给可以吗
其次我将data_out接到七段led上显示时,始终显示待写入的数据(即写的时候显示AA\CC(data的数据),读的时候不显示,因为此时给的是高阻态),而不是我想象中的sram中写入的AA\CC,我不知道是sram中根本没存入数据,还是我的输入输出总线控制有问题(即3个assign语句),希望大家给我这个初学者多提些建议!! |
|