微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > verilog中条件编译问题,大牛快来啊啊啊

verilog中条件编译问题,大牛快来啊啊啊

时间:10-02 整理:3721RD 点击:
现在我在做一个模块,要求用条件编译,比如说我只需要在行同步信号a的上升沿时做行运算,其余时候不需要做这个运算,那么我是不是需要写
    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的标准

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

网站地图

Top