【问题标题】:how can i select from some options with code not in a process in vhdl?如何从一些选项中选择代码不在 vhdl 进程中的选项?
【发布时间】:2018-03-23 11:29:02
【问题描述】:

几周前我开始自学 vhdl 语言,我还是个初学者;我的代码有些困难。

begin

    SL: sub_layer port map(
        data_in => data_key_added,
        data_out => data_substituted
    ); 

我只需要在轮数为偶数时执行上面的代码,但在轮数为奇数时不执行它(以降低功率)我想执行一些功率较小的东西,而不是像

xo: XOR_layer port map(
        data_in => xo,
        data_out => data
);
#
process(clk) 
 if rising_edge(clk) then
 case  to_integer(unsigned(round_counter) mod 2)is
         when 0 =>  -- execute (sub_layer) only 
         when others =>  --  execute (XoR_layer) only

  end case;

那么如何从端口映射选项中进行选择?

【问题讨论】:

  • 你不执行其中一个。你实例化两者,它们总是执行。然后你选择你需要的输出。
  • 我的主要目标是在偶数时执行一些指令,而在奇数时执行其他不同的指令,例如:如果偶数(纯文本+密钥更新--> perm_layer()-->sub_layer( )) 如果它是奇数 (plain +key-->xor_layer()))...如果我同时执行它们,这不会降低功率
  • 那么……您想要根据某些信号值使硬件出现和消失的 VHDL 代码吗? ...在当前的硅技术中,祝你好运。
  • 是的,但我不知道该怎么做,如果您有任何想法,我将不胜感激
  • 不要从“执行指令”的角度思考,而更多地从硬件的角度思考。你不写软件,你设计硬件。

标签: vhdl simulation vivado


【解决方案1】:

想象一下 PCB 上的两个芯片:您无法神奇地让它们出现和消失,它们始终存在。您可以做的是在一个或另一个输出之间进行选择。正如评论者所说,当您编写 VHDL 时,您是在设计硬件,而不是在编写软件。您无法选择是否执行硬件,硬件始终存在。正如布赖恩所说,如果您想在一种硬件和另一种硬件之间进行选择,您必须在每种硬件的输出之间进行选择。

现在在两个硬件模块的输出之间进行选择不会为您节省任何电力(您说您想要这样做)。如果你想节省电力,你需要以某种方式关闭这些块。简单的方法是停止对您不想使用的块进行计时;困难的方法是实际关闭电源。当我说“容易”时,我的意思是“困难、危险和充满困难”;当我说“难”时,我的意思是“更难”。你说你几周前才开始自学VHDL。您要问的不是 VHDL 语言问题,而是更基本的数字设计问题。这是一个难题。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-07
  • 2010-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多