You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VHDL实现Viterbi解码器:输出解码比特功能异常求助

Viterbi解码器VHDL实现问题:解码比特输出异常,temp_dec未正确更新

问题背景

我用VHDL实现Viterbi解码器时,所有路径度量数组均能正常填充,但最终输出解码比特的逻辑完全失效。为了调试,将原本设计为变量的temp_dec和smallest_metric改为信号,结果发现temp_dec始终无法按预期更新为smallest_metric转换后的std_logic_vector值。

关键观测现象

  • 路径度量数组填充正常,说明分支度量计算、累加-比较-选择(ACS)模块逻辑无问题
  • smallest_metric信号能正确捕获当前状态的最小路径度量值,但类型转换后赋值给temp_dec无任何变化
  • 将变量改为信号后,时序行为改变,但核心的赋值失效问题未解决

完整实现代码

-- 此处粘贴你的完整VHDL实现代码

仿真截图说明

仿真截图:temp_dec未随smallest_metric更新
截图中可见:smallest_metric已正确更新为目标数值,但temp_dec始终保持初始值或固定值,未同步完成类型转换与赋值。

排查建议

  • 类型转换校验:确认smallest_metric(如integer类型)转std_logic_vector时使用了正确的转换函数(例:to_stdlogicvector需匹配位宽,或自定义转换逻辑),避免位宽不匹配导致赋值被忽略
  • 变量/信号选型回归:VHDL中变量为立即更新,信号为延迟更新。建议先将temp_dec和smallest_metric改回变量,在进程内部完成赋值与计算,再排查逻辑问题——改为信号可能引入不必要的时序冲突
  • 驱动源检查:确认temp_dec仅由当前进程驱动,无其他并发语句或进程对其赋值,多驱动源会导致信号值不确定(高阻或冲突)
  • 最小度量选择逻辑验证:检查smallest_metric的比较逻辑,确认所有状态的路径度量都被纳入比较,无漏判或比较符号错误(如将<写为>)
  • 解码回溯触发逻辑检查:若temp_dec用于回溯过程,确认回溯的启动时钟沿、状态转移条件是否正确,是否在错误的时序点触发赋值

内容的提问来源于stack exchange,提问作者KD13D

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 13:26:02