微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 如何用Verilog实现多个信号的逻辑运算?

如何用Verilog实现多个信号的逻辑运算?

时间:10-02 整理:3721RD 点击:

我想实现多个wire类型的信号的与运算,但是信号的个数很多,我的写法是:
assign pt=g0[0]&g0[1]&g0[2]&g0[3]&g0[4]&g0[5]&g0[6]&g0[7]&g0[8]&g0[9]&g0[10]&g0[11]&g0[12]&g0[13]&g0[14]&g0[15]&g0[16]&g0[17]&g0[18]&g0[19]&g0[20]&g0[21]&g0[22]&g0[23]&g0[24]&g0[25]&g0[26]&g0[27]&g0[28]&g0[29]&g0[30]&g0[31];
但是按照上面的写法不仅复杂,而且容易写错或漏写某个信号,请教高手给出一个简单的写法,就是类似generate的方法,用一个生成语句直接生成?

位与
Verilog有专门的运算符。

位与不行啊,因为位与是寄存器变量才可啊,线网变量的位与编译不通过。

急盼高手指教

好像用always语句可以实现

如果是 g0[31:16] & g0[15:0]
再來 g0[15:8] & g0[7:0]
再來 g0[7:4] & g0[3:0]  ..
還是有更好方式 ?

assign  pt = &g0[31:0];

assign  pt = &g0[31:0]; 当g0是线网类型时,编译不通过

线网不行,你就再声明一组寄存器变量不就行了

我问你,这些要相与的信号从哪里来的?不可能在这之前没有寄存器吧?
用那些个寄存器位与下不就行了。

是这样的, 我用并行前缀计算实现一个模加法器,g0是进位生成信号,是由输入的两个操作数相与得到的,因此声明成线网类型,我只是觉得这样实现麻烦,而且以前也碰到过这种情况,一直没有一个简单的写法,所以请教下高手,能否有更好的解决办法?

呵,写法不是主要.

assign pt=&g0; 就可以了
位与语法

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

网站地图

Top