完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
for(o = 0; o524288 || finout [o] == 524288 || finout [o] >> 1;
结束 以上是我在verilog中的代码,其中finout改变了时钟周期的每个方面。 我必须访问finout的每个元素并检查它是否位于指定范围内,如果不是,我必须执行某些步骤。 但是我在IF循环中遇到错误,我已经使用过并且无法访问finout的元素“第104行:finout不是常数” 有人可以帮我这个。 谢谢,桑迪 |
|
相关推荐
4个回答
|
|
你必须要了解生成块正在做什么......
生成循环是Verilog结构部分的一部分 - 在生成块结构内部正在创建; 你是 - 安装模块 - 使用原始门 - 声明变量或网络 - 创建连续作业 - (一大堆其他的东西) 这些都是创造结构。 合成时,这些东西(通常)会产生电路结构 - 将连接触发器和LUT。 现在让我们来看看你想要做什么。 在特定时刻,您正在查看reg中的动态值以及创建或不创建结构。 这显然没有意义 - 无论是LUT是您设计的一部分还是不是 - 它在某些时钟中不能成为设计的一部分,而不是在其他时钟中。 让我们看看连续的任务本身 分配a = a + 1; 这显然不起作用,它说a的值应该总是+ 1 - 这就是连续分配它持续有一个网络取一个表达式的值。 如果要实现这一点(忘记genvar),这将被合成拒绝,或者形成组合循环(它会振荡)。 所以,你想要做的不是种族或连续分配的工作。 你想做什么? 在每个时钟上,您都试图遍历数组的每个元素,并根据该单元格当前内容的某些特征,将值更改为其他值。 这不是结构,这是程序。 所以 // row2必须是常量 //要使每个元素能够存储524288到-524288需要21位 // 20位只能到-524288到524287 reg签署[20:0] finout [row2-1:0]; reg签署[20:0] tmp; //必须以某种方式初始化finout的所有元素; 使用重置或其他机制 整数o; //循环变量 永远@(posedge clk) 开始 for(o = 0; o = 524288)|| (finout [0] 现在这应该合成(除了初始化finout的问题。但是,请注意,这有可能非常大。这将产生 - 21 * row2触发器 - 2 * row2比较器(由于RHS是常数,它可能会退化为一位或两位比较) - row2签署了21位加法器 如果row2很大(并且它必须是常量;即参数或localparam),这有可能产生大量的逻辑...... Avrum 在原帖中查看解决方案 |
|
|
|
你必须要了解生成块正在做什么......
生成循环是Verilog结构部分的一部分 - 在生成块结构内部正在创建; 你是 - 安装模块 - 使用原始门 - 声明变量或网络 - 创建连续作业 - (一大堆其他的东西) 这些都是创造结构。 合成时,这些东西(通常)会产生电路结构 - 将连接触发器和LUT。 现在让我们来看看你想要做什么。 在特定时刻,您正在查看reg中的动态值以及创建或不创建结构。 这显然没有意义 - 无论是LUT是您设计的一部分还是不是 - 它在某些时钟中不能成为设计的一部分,而不是在其他时钟中。 让我们看看连续的任务本身 分配a = a + 1; 这显然不起作用,它说a的值应该总是+ 1 - 这就是连续分配它持续有一个网络取一个表达式的值。 如果要实现这一点(忘记genvar),这将被合成拒绝,或者形成组合循环(它会振荡)。 所以,你想要做的不是种族或连续分配的工作。 你想做什么? 在每个时钟上,您都试图遍历数组的每个元素,并根据该单元格当前内容的某些特征,将值更改为其他值。 这不是结构,这是程序。 所以 // row2必须是常量 //要使每个元素能够存储524288到-524288需要21位 // 20位只能到-524288到524287 reg签署[20:0] finout [row2-1:0]; reg签署[20:0] tmp; //必须以某种方式初始化finout的所有元素; 使用重置或其他机制 整数o; //循环变量 永远@(posedge clk) 开始 for(o = 0; o = 524288)|| (finout [0] 现在这应该合成(除了初始化finout的问题。但是,请注意,这有可能非常大。这将产生 - 21 * row2触发器 - 2 * row2比较器(由于RHS是常数,它可能会退化为一位或两位比较) - row2签署了21位加法器 如果row2很大(并且它必须是常量;即参数或localparam),这有可能产生大量的逻辑...... Avrum |
|
|
|
为整数常量文字指定无效大小时会发生此错误。
以下面的代码为例:模块顶部(a,b,out);输入a,b;输出;分配= a? b:0'b0; endmodule在上面的示例代码中,表达式中的大小常量被指定为0,这导致13.3 XST错误输出以下HDLCompiler错误:“ERROR:HDLCompiler:1818 - ”top.v “第4行:整数常量literalINFO的大小无效 - 您可以使用switch -change_error_to_warning将此错误消息的严重性更改为警告”HDLCompiler:1818“” 谢谢和RegardsBalkrishan ----------------------------------------------- ---------------------------------------------请将帖子标记为 一个答案“接受为解决方案”,以防它有助于解决您的查询。如果一个帖子引导到解决方案,请给予赞誉。 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
2431 浏览 7 评论
2831 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2300 浏览 9 评论
3379 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2468 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
1393浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
597浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
462浏览 1评论
2015浏览 0评论
739浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-29 22:30 , Processed in 1.428295 second(s), Total 84, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号