verilog - 在verilog模块中使用BRAM
问题描述
我想将 BRAM 用于模型并将输出存储在该 BRAM 的另一个块中。但是在模拟时,我收到以下错误:
[VRFC 10-3236] concurrent assignment to a non-net 'roundreg' is not permitted ["C:/Users/.../keccak_new2/keccak.v":58]
代码 :
56 reg [23:0] roundreg [1599:0];
57
58 ROUNDFUNC RF1(.clk(clk), .in(roundreg[0]), .out(roundreg[1]));
解决方案
模块输出只能连接到 Verilog 中的网络类型,而roundreg[1]
不是网络。如果可能,您可以改为声明roundreg
为wire [23:0] roundreg [1599:0]
,尽管这可能会影响其余代码的工作方式。请注意,如果您可以使用 SystemVerilog,则可以避免这些复杂性,并改用logic
类型。
您还可以查看此问题以了解如何为 FPGA 设计推断块 RAM: How to initialize contents of inferred Block RAM (BRAM) in Verilog
推荐阅读
- performance - Powershell:使用“Out-File”写入较小的文件需要 30 倍的时间
- java - 以最快、最有效的方式获取二维矩阵的子矩阵
- swift - 为什么我不能将 subView 添加到我的 stackView 而不使 stackView 成为惰性变量?
- node.js - nodejs命令行应用程序的快速日志记录解决方案
- c# - 在列表\一组元素上执行条件
- flutter - 如何在 Flutter with Flushbar 中使用 AnimationController 重复动画?
- elixir - Elixir:混合 deps.get 请求失败(403)并且没有缓存副本
- r - 如何在R中将数据移动两个月?
- c# - 更新、编辑、删除和导入文件。javascript。在 VisualStudio 中使用 ASP:NET MVC C#
- javascript - Jasmine:无法测试作为参数传递的函数