问题标签 [quartus]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
verilog - Verilog 总是通过按钮激活阻塞,FSM
我正在编写一些要在Altera Cyclone II FPGAVerilog
板上编程的代码,并且我有一个应该在按下按键开关时激活的块:always
我正在为有限状态机编写一个程序,这个按键应该表明用户想要开始使用该程序,并且它应该从其初始状态移动到下一个状态。由于寄存器的初始化是不可综合的,我不能假设它START
从 0 开始。
问题是,一旦我对电路板进行编程并打开它,always
在我按下分配给的键之前,这个块已经运行了一次key[3]
。我已经检查了START
at 程序执行的值,它已经在1
. 我不知道为什么会发生这种情况,因为只有在按键时键才处于负边缘。我在以前的情况下总是使用具有相同条件的块并且它工作正常,所以我认为这与初始化有关START
?
vhdl - 函数中缺少 EOF
我有这个 VHDL 代码,它应该用作带有查找表的正弦发生器。
我不断收到错误“在函数中缺少 EOF”,或者只是在 modelsim 中出现“语法错误”。
我有一些在线教程的语法,它似乎是正确的。怎么了?
quartus - 当我尝试打开一个项目时,Quartus 打开然后自行关闭
我不完全确定为什么会这样。我还认为重要的是要说这仅发生在我的一个特定项目中。我仍然能够完美地打开其他。
vhdl - Quartus II 是否支持 line.all?
我实现了一些 VHDL 代码以在编译时导出 FSM 状态编码,这些代码可由 Xilinx ChipScope 读回。此功能已使用 Xilinx ISE 14.7、iSim 14.7 和 Mentor Graphic 的 QuestaSim 10.2c 进行了测试。我的设计也可以与 Altera FPGA 的替代顶层进行综合,但 Quartus II 似乎在return line.all;
.
Quartus II (14.0) 错误信息:
- 错误 (10351):sata_PhysicalLayer.vhdl(504) 处的 VHDL 子程序主体错误:函数“dbg_GenerateEncodings”并不总是返回值
- 错误 (10346):debug.vhdl(47) 处的 VHDL 错误:正式端口或参数“编码”必须具有实际值或默认值
- 错误 (10657):sata_PhysicalLayer.vhdl(514) 处的 VHDL 子程序错误:未能详细调用子程序“dbg_ExportEncoding”
下面,我将描述我的代码。
VHDL 代码
该设计使用 3 个函数来导出 FSM 状态编码:
- 将当前本地 FSM 状态编码为二进制值 -> dbg_EncodeState
(此函数的结果连接到 ILA 端口) - 将本地 FSM 的所有状态转换为分号分隔的字符串 -> dbg_GenerateEncodings
- 格式化此字符串并将其元素写入令牌文件-> dbg_ExportEncoding
(此函数位于包中)
FSM 声明:
局部函数 - 每个实体函数:
全局函数 - 在 debug.pkg.vhdl 中定义:
代码的最后一部分是实体中的一个虚拟常量,它调用导出函数:
使用的辅助功能:
- log2ceilnz(x) 计算以二进制编码 x 符号所需的位
- to_slv 将所有内容转换为 std_logic_vector;在这种情况下,一个整数到 slv
- str_replace 用字符串替换字符串
- str_trim 返回从 str'low 到第一次出现 NUL 的字符串
- raw_format_nat_hex 将自然格式化为十六进制字符串
附加说明:
所有 vhdl 文件都标记为 VHDL-2008。
我的问题:
- 有人在 Quartus 环境中使用过 line.all 吗?
- 有解决方法吗?
- 有没有更好的解决方案来实现导出任务而不使用恒定长度的字符串?
解决方法:
我将函数 dbg_GenerateEncodings 包装在生成语句中:
与 XST 相比,Quartus 不检查生成块内的函数。
verilog - 程序中的组合循环
程序中有一个错误,我确定它是由negedge iChang
always 块引起的。错误是:
节点中的零时振荡......检查组合环的设计或矢量源文件。
我的部分程序如下:
如果我negedge iChang
在always
块和if(!iChang)
块中删除,将不会有错误。我不明白 thenegedge iChang
和组合循环之间的关系。似乎没有反馈会导致组合循环。
vhdl - 为什么 Quartus II 将我的变量识别为信号?
我是 VHDL 编程的新手,这是我的第一个项目 - 构建一个具有常规/反向计数顺序功能的二进制计数器。我的计划很简单:
- 编写一个分频器过程以获取所需的时钟频率并将这个新时钟作为位信号输出
flag
。 - 将“标志”放入另一个进程的敏感度列表中,根据常规/反向状态对其进行计数 - 存储
curr_s
在我的代码中。 - 第三个进程接收输入
ctl
信号作为敏感信号,然后切换curr_s
并重置count
- 的值,该值设置为存储我最后一个进程的计数。
然而,现在的问题是,Quartus II 向我返回了错误消息:
错误 (10028):无法在 bi_counter.vhd(35) 处解析网络“count[31]”的多个常量驱动程序
错误 (10029):bi_counter.vhd(46) 处的常量驱动程序
错误 (10028):无法在 bi_counter.vhd(35) 处解析网络“count[30]”的多个常量驱动程序
...
错误 (10028):无法在 bi_counter.vhd(35) 处解析网络“count[14]”的多个常量驱动程序
我用谷歌搜索了一下,有一些规则,比如不允许signal
在多个进程中更改 a 的值,但问题是我将 my 声明count
为共享变量而不是信号 - 这不应该遇到这样的错误。我打算这样做是因为我想count
用作在进程之间交换信息的变量 - 这是否有意义,如果没有,是否有任何解决方法?
这是我的代码:
verilog - Quartus 和 modelsim - 编译大小转换
我将尝试在 Quartus 中编译并在 ModelSim 中模拟一些模块。
看到这个:
所以,我在modelsim中编译它。我有 0 个错误和 0 个警告。模拟就是成功,一切都很好。接下来,我在 Quartus 中编译(综合)它,我有这个警告:
所以,我理解这个警告,并通过大小转换来修复它:
在 Quartus 中编译是成功的。但是,如果我再次尝试在 ModelSim 中编译此代码,则会出现错误:
我错在哪里以及为什么modelSim无法编译尺寸铸件?
modelsim - 在 modelsim 中运行时序仿真
我尝试模拟一个非常简单的 .vo 文件,即 quartus 编译的输出,我附上了我的代码、.v 文件和 quartus 输出 .vo 文件。用于模拟模型sim-altera。尝试运行模拟后,屏幕上出现以下错误。我怎样才能解决这个问题?
谢谢
CA.v:
CA.vo:
qsim 输出:
flip-flop - 具有异步复位的 Quartus D 触发器
我需要在我的图表中使用异步重置的 DFF。quartus有吗?如果没有,我该如何实施?
memory - 在 Verilog/SystemVerilog 中推断锁存器
程序块中的语句按顺序执行,那么为什么块 1、块 2 或块 3 中的任何一个都没有推断出锁存器?
在 block1 中,在 tmp1 的新值可用之前使用阻塞分配计算 y。
在 block2 中,tmp2 是使用非阻塞赋值计算的,它应该在 always 块完成时推迟赋值。同时,z 是使用阻塞分配计算的,tmp2 的新值尚不可用。
在 block3 中有一个不完整的敏感度列表,仍然没有锁存器。
这是 Quartus II 14.1 的综合结果:
只有当我添加这个块时,才会推断出一个锁存器:
有人可以解释为什么不完整的敏感度列表或在值更新之前使用变量不会推断组合块中的锁存器吗?