完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
|
|
相关推荐
6个回答
|
|
首先你要明白,你写的逻辑代码,会被生成电路,如果用if else,就会生成一个判断选择的电路,而用generate,则只会生成你想要的电路,同样的资源,哪个消耗更少呢? generate的判断值,按照很多公司的代码规范,一定要是常量或者是参数! 别问为什么,等你用熟了verilog,自然就会明白其利弊。 你可以把generate想象成C语言的编译前预处理语句,比如if def .......endif这种,只有define了,这段话才会被编译。
最佳答案
评分 |
|
|
|
在线求解,谢谢
|
|
|
|
你别把 generate和for、if、case等联合起来,generate就是个独立的生成语句。
比如 generate assign a = b ? c : d; endgenerate 综合出来会是一个mux多选器。 但是,你可以根据各种条件来选择生成电路,比如我想通过某参数来确定要生成某种电路。 parameter MOD = "ADD"; generate if(MOD == "ADD") assign a = b + c; else assign a = b - c ; endgenerate 这条generate语句就根据参数MOD的值来选择是生成加法器还是减法器,完成b和c的运算,再赋给a。 我想case在里面的用法你也清楚了。 |
|
|
|
您好,因为我是初学,所以不知道 生成语句是什么意思,请问您这第一个例子 中的generate 语句 和module 模块有什么不同吗?或者和task 任务有什么不同吗? 第二个例子 中是根据参数MOD的值来选择是生成加法器还是减法器,这个能具体的说下吗?和没用generate 直接用if 语句 有什么区别吗?(其实还是 对生成语句的意思不明白) 评分 |
|
|
|
本帖最后由 shakenbaby216 于 2014-12-25 13:53 编辑
你需要先理解“综合”前后程序的变化。综合前,程序是一段纸面上的逻辑语言。但是综合后,程序被构建为一张逻辑电路图,称为网表。 当你写下if等判断逻辑代码时,意思是希望这些“if”逻辑最后会变成电路。 而generate if是告诉综合器:除非满足某条件才将以下代码综合为电路。换句话说,如果generate if的条件不满足,那么这段纸面代码会被综合器直接忽略。 两者有本质不同。 评分
|
||
|
||
听了2位的答疑,我有点了解了,只是想不通,如果要用 generate if 来 判断 是否生成电路的话,那么判断依据应该是 常量吧,也就是说 判断依据适合 输入信号 没有关系的,那么 这样的话 不能直接 判断下吗?干吗还要用这个 语句呢? |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
960 浏览 0 评论
矩阵4x4个按键,如何把识别结果按编号01-16(十进制)显示在两个七段数码管上?
1164 浏览 0 评论
889 浏览 0 评论
2014 浏览 0 评论
496 浏览 0 评论
1372 浏览 31 评论
5546 浏览 113 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-15 01:11 , Processed in 0.597007 second(s), Total 89, Slave 69 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号