首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VHDL中的If-语句:嵌套和多个条件

VHDL中的If-语句:嵌套和多个条件
EN

Stack Overflow用户
提问于 2018-12-11 10:21:58
回答 1查看 2.7K关注 0票数 3

这是我的代码有点像..。(我知道它不编译,它只是伪代码。)

代码语言:javascript
复制
signal  lowBound        :   std_logic_vector(15 downto 0);
signal  highBound       :   std_logic_vector(15 downto 0);
signal  result_01       :   std_logic_vector(15 downto 0);
signal  result_02       :   std_logic_vector(15 downto 0);
signal  result_03       :   std_logic_vector(15 downto 0);

...
p_state_machine: process(RESET, CLK)
    if (RESET = '1') then
        ...
    elsif (rising_edge(CLK_I)) then
        case currentState is
            when ...
            ...
            when OUTPUT =>
                -- check if results are within interval bounds
                -- option 1
                if ((result_01 > lowBound) AND (result_02 > lowBound) AND (result_03 > lowBound) AND ...) then
                    ...
                end if;

                -- option 2
                if ((result_01 > lowBound) then
                    if ((result_02 > lowBound) then
                        if ((result_03 > lowBound) then
                            ...
                        end if;
                    end if;
                end if;
        end case;
    end if;
end process;

正如您所看到的,我有一个状态机,并且希望在最后一个状态“输出”中输出结果1-3,但前提是它们在给定的区间范围内。所以现在我有6个条件,我需要检查。如果全部为true,则输出结果1-3;如果至少有一个为false,则设置一个错误标志。

我正在与Xilinx板在25兆赫,但希望有一个强大的设计,可以处理更高的频率,以及。

所以现在我的问题..。检查结果1-3是否在给定的范围内的最佳方法是什么? 1.我知道有多个选项,但哪种选项最好,特别是考虑到时间? 2.我的代码中的选项1和2是否转换为相同的硬件,还是有不同的硬件? 3.如果我处理16位向量,那么在状态机之外检查这些条件更好吗?(我想有6个嵌套的16位比较会导致计时问题!)

我对VHDL (刚毕业)相当陌生,非常感谢您的帮助。谢谢:)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-11 10:37:57

在大多数设计中,困难在于编写功能正确的代码,因此满足计时目标是微不足道的。对于25 MHz的设计,上面的系数为6-10,使用这样的代码,无论您如何编写,设计通常都会满足时间要求,而不需要任何特别的努力。

因此,编写代码使其易于阅读和检查,并让工具将实现处理到所需的频率。从工程角度来说,这是不关键代码的一种很好的方法,因为它为设计的关键部分腾出了时间。

对于你是否在程序之外设定条件的问题,从时间上讲,这并不重要。如果工具不为相同的结果重用比较结果,而是为每个结果实现单独的比较,那么它可能会稍微缩小一些大小。但是,在现代FPGA中,与>进行16位比较(这实际上是有效的减法)在上述频率上还远远不够关键。还要注意的是,所有的比较都可以并行进行,因为比较是独立的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53722020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档