verilog中条件编译问题,大牛快来啊啊啊
if(posedge a)
`define h_cal 1;
然后在顶层中写
`ifdef h_cal
h_cal.v //运行行计算v文件
`else
v_cal.v
原来没接触过条件编译,不是很清楚define的用法,如果我直接在顶层中定义 `define h_cal 1;那不是以后要运行v_cal.v就要手动改么?
ps:条件编译指有一部分代码不需要编译,这样的话是否会在芯片面积和功耗上有所降低 减少成本?
兄弟没学过verilog吧
学过啊 怎么了
快来人啊啊啊
有人来么
always @(posedge clk)begin
...
end
在begin -end中间加要执行的代码
这种语句的含义就是 当clk上升沿的时候 执行 下面的行为
但如果小编是一个信号a,而不是时钟
通常会通过先打拍信号,再判断上升沿
always @(posedge clk)begin
a_ff1 <= a;
a_ff2 <= a_ff1;
end
上升沿的判断条件:if((a_ff1 == 1'b1) && (a_ff2 == 1'b0))
我只是简单写了下表达下意思,我是想说怎么通过条件语句来判断进行条件编译,不是同步啥的,

你的这段话不符合verilog的语法要求,别人没法看的。
if(posedge a),这句话就会晕掉大部分人。这就是为什么楼上有兄弟说你是不是不会verilog的原因。
这么写是不符合verilog语法的
一般在编译器加宏定义
LZ要知道:你编写的代码下入FPGA内部之后就产生了固定的电路结构,这个结构是不会消失的,结构的功能会根据你的控制信号或者数据来产生或者改变信号。
LZ想让FPGA内部有那个特定的电路结构,但是在某些时候又想让它消失,你觉得可能吗?
LZ要知道:你编写的代码下入FPGA内部之后就产生了固定的电路结构,这个结构是不会消失的,结构的功能会根据你的控制信号或者数据来产生或者改变信号。
LZ想让FPGA内部有那个特定的电路结构,但是在某些时候又想让它消失,你觉得可能吗?
小编是近期看到的牛人,没有之一。
你要简要表达意思可以,但总不能乱写吧?
行为级代码
这样是不可以的。
条件编译的作用在于综合,仿真时,只会编译条件匹配的代码
`ifdef 可以加在一个模块的任意位置,只要你保证在某种条件匹配下代码的功能是你想要的
但是`ifdef不能用在filelist里,所以你上面写法是不对的
更加详细的说明可以查看verilog的标准
