完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我得到一个奇怪的错误,我不知道如何处理。
我已经提取了以下相关代码: #( 参数NUM_REG = 9 ) ( 输入[7:0] spi_in, 输出reg spi_in_ready,//此模块已准备好接收数据 输出reg [7:0] spi_out, 输出reg [(NUM_REG)* 8 - 1:0]寄存器 ); spi_out 我以为这是允许的......我错过了什么? 有没有更好的方法来做到这一点? 我看到的唯一选择是一个大案例陈述。 功能齐全,但远非优雅! |
|
相关推荐
3个回答
|
|
dwisehart写道:如果你使spi_in成为一个参数,这使得它在合成时成为常量,这是有效的。
你不能做的是在运行时更改你从'register'中选择的位而没有case语句:case(spi_in)8'd0:spi_out 8'd1:spi_out ... endcaseDaniel 同样,Verilog 2001也是如此。请参阅上面的帖子。 你写的代码可以写成: spi_out |
|
|
|
我并不是故意暗示你的代码不起作用。
我反对的是“你不能做的就是在运行时更改你从'register'中选择的位而不用像case语句那样。” 您确实可以使用变量来执行部件选择,您只是不能在部件选择中使用冒号两侧的变量。 显然有其他方法可以选择寄存器的变量片,包括case语句和for循环,它们也是可合成的。 在冒号两边都有变量的部分选择不仅不可合成,它不是合法的Verilog - 即使表达式在切片中评估为一个恒定的位数。 - Gabor |
|
|
|
很难说为什么标准是按原样制作的。
最有可能的是(与其他“Verilogisms”一起)只是另一种情况,其中标准易于为工具制造者实施 - 而不是工具用户。 话虽如此,VHDL中允许使用等效语法。 我认为没有理由为什么Verilog综合工具不能确定: 注册[变量+7:变量] 将提供恒定的位宽。 VHDL中的等价物: 注册(变量+ 7 downto变量) 是模拟和合成的有效语法。 +:和 - :语法是一种解决Verilog中这种缺陷的拼凑方法,但它不像等效的VHDL语法那样可读。 - Gabor |
|
|
|
只有小组成员才能发言,加入小组>>
2387 浏览 7 评论
2802 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2269 浏览 9 评论
3337 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2437 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
764浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
548浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
378浏览 1评论
1971浏览 0评论
688浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-27 04:13 , Processed in 1.250199 second(s), Total 82, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号