0

萌新提问大佬:请问case语句太多有简便得编写方法吗?

比如

always @(posedge clk or negedge rst_n)
begin
    if(!rst_n)
    begin
        case(a)
            8'd0: begin
                data[0] <= data_in;
            end
            8'd1: begin
                data[1] <= data_in;
            end
            ...
            ...
            8'd255: begin
                data[255] <= data_in;
            end
        endcase
    end
    else
    begin
        case(ctl)
            8'd0: begin
                data[0] <= ~data_in;
            end
            8'd1: begin
                data[1] <= ~data_in;
            end
            ...
            ...
            8'd255: begin
                data[255] <= `data_in;
            end
        endcase
    end
end

能够不写256个case语句吗?规模大到2000难道也要手写?

编辑 重设标签(回车键确认) 标为违禁 关闭 合并 删除
匿名用户

匿名

2
always@(posedge clk or negedge rst_n)    begin
if(!rst_n)    begin
    data[a]    <= data_in;
end
else    begin
    data[ct1]    <= ~data_in;
end
end

你看这样能不能实现你所要的功能。

编辑 标为违禁 删除 链接 更多选项...
墨竹照月影 头像
1

assign data[a] = data_in ?

编辑 标为违禁 删除 链接 更多选项...
开水 头像
0

直接拿脚本生成吧,兄弟,所以我说学FPGA,最好你会一门脚本语言,老一点的就是Tcl咯,新一点的python吧。当然你也可以搞个ROM,然后自己做一个类似于CPU的译码取指。

编辑 标为违禁 删除 链接 更多选项...
shawn 头像
登录/注册后进行回答