为什么我在MAX +PLUS®II软件中出现以下错误:“未知问题 design.vhd(%SynPrep-A-UnexpectedCase,意外情况:iMapSymbol中的“IndexedName1”,位于文件mapping.c的第1080行。“?-Altera-Intel社区-FPGA CPLD-ChipDebug

为什么我在MAX +PLUS®II软件中出现以下错误:“未知问题 design.vhd(%SynPrep-A-UnexpectedCase,意外情况:iMapSymbol中的“IndexedName1”,位于文件mapping.c的第1080行。“?

当您编译在索引信号向量上使用“rising_edge”函数的VHDL代码时,MAX + PLUS II软件会发生此错误.MAX + PLUS II VHDL不支持对阵列或向量的位片进行时钟控制。以下代码将给出此错误:

 边缘IS的建筑工作                                         

                                                                               

开始                                                                          

                                                                               

edge:PROCESS(reset,div_16(3))                                                

开始                                                                          

     如果reset ='0'则                                                       

         sig_reg <='0';                                                    

     elsif rising_edge(div_16(3))然后 -  *这导致问题*   

         sig_reg <= shft_reg;                                               

     万一;                                                                   

END PROCESS边缘;                                                              

结束工作; 

解决方法是将索引的矢量信号分配给临时的std_logic信号。然后,rising_edge函数将正常工作。以下是变通方法的示例:

 边缘IS的建筑工作                                               

                                                                               

   SIGNAL div_16_temp:std_logic;                                              

                                                                               

开始                                                                          

   div_16_temp <= div_16(3);                                                

                                                                               

edge:PROCESS(reset,div_16(3))                                                 

开始                                                                         

     如果reset ='0'则                                                      

         sig_reg <='0';                                                    

     elsif rising_edge(div_16_temp)然后 -  *在这里输入温度信号*            

         sig_reg <= shft_reg;                                               

     万一;                                                                   

END PROCESS边缘;                                                              

结束工作; 
请登录后发表评论

    没有回复内容