充当别的mcu的外部存储器(51类)
// 锁存地址 - STC12C5A60S2
reg [15:0]rAddr_51; //存放51单片机传过来的地址 读51地址寄存器
always @ (posedge MCLKout or negedge RSTn)
begin
if (!RSTn) begin rAddr_51 <= 16'h0000; end //如果复位引脚为低电平,寄存器中存放的地址是16个位的0
else if (!ALE_51) begin rAddr_51 <= BUS_51; end //如果锁存信号为低电平,将BUS_51上的实时的值存放到地址寄存器中去
end
wire [15:0]wAddr_51 = rAddr_51;//用的时候不再指明是16位的
reg rRDn_51;
reg rWRn_51;
reg [15:0]DATA_IN;
always @ (posedge MCLKout)//在是分频后的时钟的每个上升沿都进行:
begin
rRDn_51 <= RDn_51; //读取端口RDn_51的状态
rWRn_51 <= WRn_51; //读取端口WRn_51的状态
DATA_IN <= BUS_51; //读取..总线上的数据
end
第一个always监视RSTn和ALE_51两个引脚,触发源是时钟和复位引脚。每个时钟的上升沿判断RSTn引脚和ALE_51引脚:无论什么时候TSTn引脚从高电平到低电平,地址都为0x0000;当RST失效,判断ALE_51引脚,当为低电平的时候,将实施总线上的数据放到rAddr_51这个地址寄存器中,在每个时钟的上升沿的时候还要做的是将RDn和WRn和实时数据引脚上的状态给到新开辟的寄存器中。
版权声明:本文为博主原创文章,未经博主允许不得转载。

浙公网安备 33010602011771号