微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教verilog如何取数组的值

请教verilog如何取数组的值

时间:10-02 整理:3721RD 点击:
请教verilog如何取数组的值
比如 b是数组

always@(posedge clk)

    if(!rst_n)

      begin

      for(i=0;i<3;i=i+1)

        a <= b[i+4:i];

    end

这个赋值有语法错误,请教要实现,a <= b[i+4:i];应该如何写?

[i+:4]


非常感谢,请问这个语法怎么写
for(i=0;i<3;i=i+1)
begin
a <= mem[i+4:i];
b <= mem[i+8:i+5];
c <= mem[i+12:i+9];
end



   可能你理解有误,连带着你描述的需求也有问题,都不晓得怎么给你解释了,完整的描述下你电路要实现的功能吧

verilog数组不支持变量,在2000版本里加了一个语法支持变量取值,即二楼的写法[i+:cons],其中cons为常数



   我只是要做一个testbench,command是数组,400bit      command = {'h0,
8'h1b,8'h3b,8'h5b,8'h7b,4'hc,
8'h12,8'h34,8'h56,8'h78,4'he,
8'h9a,8'hbc, 8'hde,8'hf0, 4'hf,
8'h1b,8'h3b,8'h5b,8'h7b,4'hf};
循环取值,先把最后一行的数据赋值给五个变量,然后依次是其他几行。


仿照二楼的提示,写了一下
    while(wr_byte_cnt<num_byte)    begin
        o_cmd_byte_en   = mem_command[m+:4];
        m = m+4;
        o_cmd_din_0     = mem_command[m+:8];
        m = m+8;
        o_cmd_din_1     = mem_command[m+:8];
        m = m+8;
        o_cmd_din_2     = mem_command[m+:8];
        m = m+8;
        o_cmd_din_3     = mem_command[m+:8];
        m = m+8;
    end

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top