如何将一个32位长的数组按照8位一个数组长度逐次写入FIFO,

2019-03-25 07:36发布

本人现在要将一个32位长的数组写入FIFO,但每次只能8位8位逐次写入,也就是需要4个时钟周期,
可是每次编程都出现错误,下面是本人的程序思想,有点像C语言,请各位赐教一下,应该怎么修改才能实现。
wr_data <= datain [8*i+7:8*i];
i <= i +1;
wr_data <= datain [8*i+7:8*i]; 这个句子一直提示有问题,不知道怎么解决了?
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
5525
1楼-- · 2019-03-25 10:51
< / datain [8*i+7:8*i], 这个编译过不去。
先load 到32bit, 再做个count, 用case 选,就得到8bit数据,
再写8bit数据。画个时序吧。
mkkop
2楼-- · 2019-03-25 16:07
reg [7:0] mun;
reg [31:0]dat[0:47];
out [7:0]dat_pin;

{
    mun <= mun+1'd1;
    dat_pin <= (dat[mun])[7:0];
   dat_pin <= (dat[mun])[15:8];
   dat_pin <= (dat[mun])[23:16];
   dat_pin <= (dat[mun])[31:24];
}


我也是初学者,以上只是思路,不保证源码是对的,欢迎指点
5525
3楼-- · 2019-03-25 19:23
 精彩回答 2  元偷偷看……
5525
4楼-- · 2019-03-25 20:52
mkkop 发表于 2016-5-22 08:07
reg [7:0] mun;
reg [31:0]dat[0:47];
out [7:0]dat_pin;

{
    mun

reg [31:0]dat[0:47];
一般FPGA里面,不这样定义存储空间,而是直接调用core.
只要在FIFO写入前,做一个 32bit 到 8bit 的装换即可。

一周热门 更多>