现在很多数据交互都是直接读写32位数据,但是我们对数据进行处理时往往用到8位一字节进行操作处理,用了很多方法,最后想到一个简便的办法,做个笔记。话不多说,直接上代码
data_8 <= data_32[addr][(cnt*8+7) -: 8];
if(cnt == 3)begin
addr <= addr+ 1;
end
data_8是8位的寄存器,data_32是32位宽的ram每个地址可放四个字节,addr是地址,cnt是计数的,32位需要四次取出
如果单纯是32位转8位,把地址去掉就好。
data_8 <= data_32[(cnt8+7) -: 8];
**[(cnt8+7) -: 8]**这句做一下说明,当cnt等于1时[(7) -: 8],就是从7开始,往下减八位,也就是【7:0】还可以往上[(0) +: 8]就是【0:7】