VHDL MUX 选择常数

Posted

技术标签:

【中文标题】VHDL MUX 选择常数【英文标题】:VHDL MUX select with constant 【发布时间】:2014-03-13 20:25:27 【问题描述】:

我在我的 VHDL 包中定义了一个常量。

constant USE_OSD : integer := 0;

这是我在合成之前在我的包中更改的内容。我想在我的 VHDL 代码中使用这个常量作为我的 MUX 选择行。我该怎么做?

例如,类似:

 s_out <=  path_a WHEN (USE_OSD = 0) else path_b;

谢谢,

--鲁迪

【问题讨论】:

看起来不错。有什么问题? 你必须将包添加到你正在处理的 VHDL 文件中,library work; use work.my_package.all; 【参考方案1】:

这与 MUX 选择行无关。

根据此常量的值,可以将其详细说明为:s_out &lt;= path_a;s_out &lt;= path_b;。永远不会有多路复用器。

作为一种学习方式,请考虑通过综合工具运行此程序并查看结果。

【讨论】:

术语“mux”可能不准确,但如果打算使用常量在两个信号分配之间进行选择,我认为这种方法没有什么特别的问题。 我同意这种方法没有任何问题。我只是想指出没有推断出多路复用器。这实际上是推断 less 逻辑的好方法。【参考方案2】:

我认为你正在寻找一个 if 生成。这就像 C 中的预处理器命令。

例子:

path_a: if USE_OSD = 0 generate
   s_out <= path_a;
end generate path_a;
path_b: if USE_OSD /= 0 generate
   s_out <= path_b;
end generate path_b;

我认为 VHDL 2008 还允许其他生成。

【讨论】:

以上是关于VHDL MUX 选择常数的主要内容,如果未能解决你的问题,请参考以下文章

具有 Mux 8:3 的 VHDL 全加器

芯片 Mux4way16 在 ‏硬件模拟 (VHDL) 上直到最后才运行

Vhdl 乘数使用率太低

VHDL组件多路复用器不在modelsim中返回值

vhdl 数据选择器设计8选1 用CASE语句

请问用if写出四选一多路选择器的vhdl的设计,怎么写?