【问题标题】:Why does my selected signal assignment not work?为什么我选择的信号分配不起作用?
【发布时间】:2018-11-21 15:34:11
【问题描述】:

我在VHDL 代码中选择的信号分配有什么问题?

with s select x <= a when (s = '1')
         else y <= a when (s = '0');

我也试过这个:

with s select x <= a when '1';
with s select y <= a when '0';

【问题讨论】:

  • “不工作”有点含糊。提供minimal reproducible example,包括问题描述和复制方法。
  • 问答旨在为未来有问题的读者提供搜索资源。没有明确的问题陈述(你得到什么迹象表明你的信号分配陈述不起作用?)你的问题不清楚。回答这个问题也可能取决于未提供的s 声明。选定的信号分配具有等效的 case 语句(在过程语句中)。 case 语句需要涵盖 s 值的所有选择。对于类型位,它们是,对于 std_logic (std_ulogic) 不是。因为您的问题无法回答。

标签: vhdl vivado


【解决方案1】:

你想做什么并不完全清楚。根据您向我们展示的内容,在我看来,您想创建一个由信号 s(1 个输入,2 个输出)控制的解复用器,其中 x

当您想要创建一个多路复用器(n 个输入,1 个输出)时,应该使用 select。也就是 demux 的反面!

我建议您使用简单的 if 语句来创建解复用器。

例子:

if s='1' then x &lt;= a; else y &lt;= a; end if;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-09-03
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-23
    相关资源
    最近更新 更多