微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > case 参数传递求解

case 参数传递求解

时间:10-02 整理:3721RD 点击:
vhdl 可以用
case
when 0 to x(参数) => 来表示
请问verilog怎么写
查了几本书,都找不到

求解啊

Sv 里面有 inside 也许满足你要求

表示不懂小编和楼上的在说什么。VHDL的顺序语句case和并行语句when是一样的效果,verilog里面也有顺序语句case啊!都是用来表示组合逻辑。而且verilog里面的case是可以嵌套case、if等,不知小编是否是要说嵌套···真心不懂你们讨论什么。

很好奇···HDL语言还有参数传递的概念?求小编解释一下想如何传递?

不能叫传递吧,我举个例子
case:0到(x1-1),x1到(x2-1),剩下的;x1,x2皆为参数
vhdl就可以写成
case cnt is:
when 0 to (x1-1) =>...
when x1 to (x2-1) =>...
when others =>...
这种时候Verilog对应该怎么写?
不可能从 x1,x2都是模块外部设置的参数parameter
verilog好像没有对应的写法,难道只能用锁存器:
case (cnt)
x1:...
x2:...
default:...



模块调用的时候parameter参数可以传递,举个例子:

  1. // 4-bit加法器
  2. module ADDER(add_x1,
  3. add_x2,
  4. add_sum);

  5. parameter X1_WIDTH = 4;
  6. parameter X2_WIDTH = 4;
  7. parameter SUM_WIDTH = 5;

  8. input [X1_WIDTH-1:0] add_x1;
  9. input [X2_WIDTH-1:0] add_x2;
  10. output [SUM_WIDTH-1:0] add_sum;
  11. ……
  12. endmodule

复制代码



调用的时候这样写,就变成8-bit加法器了:

  1. ADDER    #(8,8,9) adder_u1(.add_x1(x1),
  2. .add_x2(x2),
  3. .add_sum(sum));

复制代码


不知道这个能不能满足要求

我不是问参数传递的事 ,是问在case语句下 怎么写和下面vhdl同样逻辑的语句,因为verilog没有to这个符号;
(x1,x2是参数)
case cnt is:
when 0 to (x1-1) =>...
when x1 to (x2-1) =>...
when others =>...
谢谢大家 呵呵



   懂了,你是想偷懒……   没见过,不知道verilog2001支不支持

verilog好像没有的……
你可以多定义几个wire……
assign net1=(cnt>=0) & (cnt <x1);
assign net2=(cnt>=x1) & (cnt <x2);
然后case ({net1,net2})

什么意思,中文解释,别数学表达式

不是偷懒啊,计数器位数多的 咋办啊 关键是参数的话 你不可能挨个写啊

不是偷懒 如果是参数的话 不可能挨个写啊 因为你不知道参数是几啊

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

网站地图

Top