【问题标题】:Declaring multiple cases with the same function?声明具有相同功能的多个案例?
【发布时间】:2015-11-27 01:10:47
【问题描述】:

我是 VHDL 的初学者,开始为我所在的课程编写代码。我正在研究数字报警自行车锁,我正在尝试找到一种调用此代码的有效方法,但我目前正在获得语法错误。

PROCESS (Clk, H)
BEGIN
    CASE current_state IS
        WHEN s0,s1,s2,s3,s4,s5,s6,s7,s8,s9,s10,s11,s63=>
            IF H = "0" THEN
                current_state <= s0;
            END If;
        WHEN s12,s13,s14,s15,s16,s17,s18,s19,s20,s21,s22,s23,s24,s25,s26,s27,s28,s29,s30,s31,s32,s33,s34,s35,s36,s37,s38,s39,s40,s41,s42,s43,s44,s45,s46,s47,s48,s49,s50,s51,s52,s53,s54,s55,s56,s57,s58,s59,s60,s61,s62=>
            IF H = "0" THEN
                current_state <= s52;
            Elsif (rising_edge(Clk) THEN
                current_state <= next_state;
            END IF;
     END CASE
END PROCESS;

基本上,这些都是状态类型,我想基本上调用所有这些状态,并检查它们的H值,然后会调用某些条件。但是,我收到此错误:

ERROR:HDLParsers:164 - "(Directory///)" Line 50. parse error, unexpected COMMA, expecting PIPE or ROW

我不能使用逗号,但是任何有经验的 VHDL 代码都知道如何解决这个问题,因此我们不必为每个 s-state 显式重复代码吗?

【问题讨论】:

    标签: function if-statement case vhdl


    【解决方案1】:

    如果你再仔细看看,你可能会找到

    WHEN s0 to s11|s63 => 
       ...
    WHEN s12 to s62 =>
       ...
    

    【讨论】:

      【解决方案2】:

      我为自己的问题找到了解决方案哈哈哈。

      有一个“管道”符号允许此操作。

      PROCESS (Clk, H)
      BEGIN
          CASE current_state IS
              WHEN s0|s1|s2|s3|s4|s5|s6|s7|s8|s9|s10|s11|s63=>
                  IF H = '0' THEN
                      current_state <= s0;
                  END If;
              WHEN s12|s13|s14|s15|s16|s17|s18|s19|s20|s21|s22|s23|s24|s25|s26|s27|s28|s29|s30|s31|s32|s33|s34|s35|s36|s37|s38|s39|s40|s41|s42|s43|s44|s45|s46|s47|s48|s49|s50|s51|s52|s53|s54|s55|s56|s57|s58|s59|s60|s61|s62=>
                  IF H = '0' THEN
                      current_state <= s52;
                  Elsif (rising_edge(Clk)) THEN
                      current_state <= next_state;
                  END IF;
           END CASE;
      END PROCESS;
      

      【讨论】:

        猜你喜欢
        • 2020-07-17
        • 2016-03-17
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-05-11
        • 1970-01-01
        相关资源
        最近更新 更多