0
architecture beh of pwm is 
begin
type lutable is array (1 to 64) of integer range 0 to 4000;
-----------------------------------------------tables for FULL STEPPING.
constant full_pwm1_1: lutable := (  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  
                                            3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  
                                            3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  
                                            3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900);
variable ds1_1: integer range 0 to 4000;        --Duty Cycle Variables for PWM1_1
variable c_full,c_half,c_quat,c_eigh,c_sixt: integer range 1 to 64;

process(gclk)
begin
case selectline is 
when "001" =>                    --------------------FULL STEPPING
            if dir='1' then--------------------direction selection
                    ds1_1 := full_pwm1_1(c_full);

私が言及していない他のすべての変数は、適切な範囲で整数として定義されており、すべて構文的に定義されています。

しかし、それらすべてに「未定義のシンボル」エラーが発生し、full_pwm1_1 定数も発生します。誰かが私を助けて、配列の宣言とインスタンス化が正しいかどうかを確認してください。

4

2 に答える 2

1

"architecture" 行と "begin" 行の間に型と定数の宣言を記述します。例:

architecture beh of pwm is 
   type lutable is array (1 to 64) of integer range 0 to 4000;
   constant full_pwm1_1: lutable := (  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  
                                        3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  
                                        3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  
                                        3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900,  3900,0,0,3900);

   ...
begin

   ...

"process" と "begin" の間に変数宣言を記述します。

process(gclk)    
    variable ds1_1: integer range 0 to 4000;        --Duty Cycle Variables for PWM1_1
    variable c_full,c_half,c_quat,c_eigh,c_sixt: integer range 1 to 64;
begin
    ...

または ds1_1 などをシグナルとして宣言します。例:

...
   signal ds1_1: integer range 0 to 4000;        --Duty Cycle Variables for PWM1_1
   signal c_full,c_half,c_quat,c_eigh,c_sixt: integer range 1 to 64;
...
begin
    ...
    process(gclk)
       ...
于 2013-06-21T07:49:09.290 に答える