前言
之前使用generate和for时候一直糊里糊涂的使用,所以今天静下心来总结一下,顺便看看有哪些坑。
做一个模块,输入为多路data通过bit map型vld信号作为标记,输出为单路data,取多路信息中port num值最大的那一路数据,同时输出这一拍共多少路有数据;
| 信号 | 端口 | 位宽 | 含义 |
| in_vld | input | PORT_NUM | bitmap型vld信号,每一bit标志一路数据有效 |
| in_data | input | PORT_NUM * DATA_WD | 共PORT_NUM路数据,每路数据位宽为DATA_WD |
| out_vld | output | 1 | 输出数据有效 |
| out_data | output | DATA_WD | 输出数据 |
| out_cnt | output | PORT_WD |
本文总结了Verilog中的generate和for循环的使用,包括构造循环实例化模块、简化wire连接以及通过if-generate和case-generate选择代码块。在实际应用中,作者给出了一个根据输入标记选择最大port num数据的模块示例,并详细阐述了generate的注意事项,如循环变量命名、代码块命名等。
订阅专栏 解锁全文
3万+

被折叠的 条评论
为什么被折叠?



