大量的VHDL信号分配......可以缩小吗?

 Laiio120669 发布于 2023-02-09 07:12

在一个体系结构中,我有大量并发信号分配遵循特定的公式,在这种情况下:

x(i) <= x(i-1) XOR x(i-4) XOR ROTATE_LEFT(x(i-8), 2)

例:

architecture behavioural of blah is
    --Signals
    type sigArrayType is array(127 downto 0) of std_logic_vector(31 downto 0);  
    signal sigArray : sigArrayType  :=  ((others => (others => '0')));
begin

    sigArray(8) <= sigArray(7) XOR sigArray(4) XOR (ROTATE_LFET(sigArray(0), 2);
    sigArray(9) <= sigArray(8) XOR sigArray(5) XOR (ROTATE_LFET(sigArray(1), 2);
    sigArray(10) <= sigArray(9) XOR sigArray(6) XOR (ROTATE_LFET(sigArray(2), 2);
    --...
    --...
    --LOTS OF OTHER ASSIGNMENTS
    --...
    --...
    sigArray(127) <= sigArray(126) XOR sigArray(123) XOR (ROTATE_LFET(sigArray(119), 2);
end behavioural;

有没有办法让VHDL自动执行此操作,而不是让我输入超过一百个版本?我只是在寻找一个简单的"FOR"声明或类似的东西吗?

1 个回答
  • VHDL有一个generate带有loop(for)的构造用于此目的,因此您可以将代码编写为:

    x_gen : for i in 8 to 127 generate
      x(i) <= x(i-1) XOR x(i-4) XOR ROTATE_LEFT(sigArray(i-8), 2);
    end generate;
    

    VHDL还有一个条件生成(if).你可以尝试google VHDL生成语句,可以看一下generate语句.请注意,VHDL-2008增强了generate声明.

    2023-02-09 07:28 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有