// 锁存地址 - 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和实时数据引脚上的状态给到新开辟的寄存器中。
版权声明:本文为博主原创文章,未经博主允许不得转载。