📄 arraycheck.tdf
字号:
SUBDESIGN arraycheck
(
Clock,Init :INPUT;
Poly[10..0], Count[10..0],Exactarray[3..0] : OUTPUT;
)
VARIABLE
Poly[10..0] : DFF;
Count[10..0] : DFF;
Exactarray[3..0] : DFF;
SMA :Machine of bits (machz[3..0]) % for checking array 00001010 %
with states (A_zero=0,Az_one=1,Az_two=2,Az_three=3,Az_four=4,
Ao_five=5,Az_six=6,Ao_seven=7,az_eight=8);
BEGIN
%clock%
Poly[10..0].clk=Clock;
Count[10..0].clk=Clock;
Exactarray[3..0].clk=Clock;
SMA.clk=Clock;
%Inits%
Poly[10..1].clrn=Init;
Poly[0].prn=Init;
Count[].clrn=Init;
%Ordinal counter%
Count[].d=Count[].q+1;
%Poly operation%
if (Poly[]==H"0") then
Poly[0].d=VCC;
ELSE Poly[9..0].d=Poly[10..1].q;
Poly[10].d=Poly[0].q xor Poly[2].q;
end if;
%State Machine array 00001010%
IF (SMA==A_zero AND Poly[0]==0) THEN %0%
SMA=Az_one;
Exactarray[].d=Exactarray[].q;
ELSIF (SMA==Az_one AND Poly[0]==0) THEN %00%
SMA=Az_two;
Exactarray[].d=Exactarray[].q;
ELSIF (SMA==Az_two AND Poly[0]==0) THEN %000%
SMA=Az_three;
Exactarray[].d=Exactarray[].q;
ELSIF (SMA==Az_three AND Poly[0]==0) THEN %0000%
SMA=Az_four;
Exactarray[].d=Exactarray[].q;
ELSIF (SMA==Az_four) THEN %judge next poly%
case Poly[0] is
when 0 => %hold state 0000%
SMA=Az_four;
when 1 => %GO 00001%
SMA=Ao_five;
end case;
Exactarray[].d=Exactarray[].q;
ELSIF (SMA==Ao_five AND Poly[0]==0) THEN %000010%
SMA=Az_six;
Exactarray[].d=Exactarray[].q;
ELSIF (SMA==Az_six) THEN %judge poly is 1 or 0%
case Poly[0] is
when 0 => %if poly is 0 then we have 00%
SMA=Az_two;
when 1 => %go 0000101%
SMA=Ao_seven;
end case;
Exactarray[].d=Exactarray[].q; %00001010%
ELSIF (SMA==Ao_seven AND Poly[0]==0) THEN
SMA=A_zero;
Exactarray[].d=Exactarray[].q+1;
ELSE
SMA=A_zero;
Exactarray[].d=Exactarray[].q;
END IF;
END;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -