152
Device-Specific Information:
d:\users\max2work\ahdl\cnt_x_wp.rpt
cnt_z_wp
••••• Logic for device *cnt_z_wp’ compiled without errors.
Device: EPM7128SLC84-7
Device-Specific Information:
d:\users\max2work\ahdl\cnt_x_wp.rpt
cntzwp
•* EQUATIONS ••
ABUSO : INPUT;
ABUS1 : INPUT;
ABUS2 : INPUT;
ABUS3 : INPUT;
BBUSO : INPUT;
BBUS1 : INPUT;
BBUS2 : INPUT;
BBUS3 : INPUT;
10 : INPUT;
11 : INPUT;
Zegar : INPUT;
— Node name is 'WyO' - ’ff0*from file "cnt_z_wp.tdf" linę 22,column 4
— Equation name is 'WyO', location is LC115, type is output.
MyO - DFTE( _EQ001 $ GND, GLOBAL( Zegar), VCC, VCC, VCC);
_EQ001 - !10 4 !I1 4 MyO
« BBUSO A 10 4 !II
• ABUSO 4 110 t II
, • 10 4 II « !WyO;
— Node name is 'Myl* - 'ffl'fron file "cnt_z_wp.tdf" linę 22,column 4
— Eąuation name is 'Nyl', location is LC118, type is output.
Wyl - DFFE( _EQ002 S GND, GLOBAL( Zegar), VCC, VCC, VCC);
EQ002 - !10 4 Tli 4 Wyl
• BBUS1 4 10 4 !II
• ABUS1 4 I10 4 U
• 10 4 II 4 WyO 4 !Wyl
• 10 4 II 4 !WyO 4 Wyl;
— Node name is ,Wy2‘ - ,ff2,from file “cnt_z_wp.tdf" linę 22,column 4 -• Eąuation name is ,Wy2’, location is LC12Ó, type is output.
Wy2 - TFFE{ _EQ003, GLOBAL( Zegar), VCC, VCC, VCC);
EQ003 - 10 4 II 4 WyO 4 Wyl
• ABUS2 4 !10 4 II 4 !Wy2
• BBUS2 4 10 4 !I1 4 !Wy2
• !BBUS2 4 10 4 !II 4 Wy?
• !ABUS2 4 !10 4 II 4 Wy2;
-- Node name is ‘Wy3' - *ff3,from file "cnt_z_wp.tdf" linę 22,column 4
— Eąuation name is 'Wy3', location is LC123, type is output.
Wy3 - TFFE1 EQ004, GLOBAL( Zegar), VCC, VCC, VCC);
EO004 - 10 4 "li 4 WyO 4 Wyl 4 Wy2
• ABUS3 4 !10 4 II 4 !Wy3
5 2 Jęxyk AUDI.
153
BBUS3 ‘BBUS 3 !ABUS3
W zbiorze typu TDF moZna wykorzystywać układy lub ich części zdefiniowane w innych zbiorach, niekoniecznie TDF. Takie fragmenty są nazywane makro funkcjami Tworzenie projektu hierarchicznego sprowadza się do sposobów odwoływania się do makrofunkcji zdefiniowanej w innym zbiorze lub w standardowej bibliotece. Stosuje się dwa sposoby: pierwszy polega na zadeklarowaniu zmiennej typu makrofunkcja. Odwołania do poszczególnych wejść i wyjść mają wtedy nazwy z rozszerzeniem kropkowym, np.:
counter.dnup w specyfikacji macrol.tdf (patrz przykład 5.24), gdzie dnup jest
portem makrofunkji 4count, służącym do określenia kierunku liczenia, lub - counter. (qd, qc, qb, qa) w przykładzie macroI.tdf.
W obu przypadkach użyte nazwy muszą pokrywać się z nazwami w deklaracji.
Przykład 5.24
INCLUDE "4count"; INCLUDE "16dmux";
SUBDESIGN macrol
clk : INPUT;
out[15..0] : OUTPUT;
ł
VARIABLE
: 16dmux;
counter
BEGIN
counter.clk - clk; counter.dnup - GND;
decoder.(d,c,b,a) - counter.(qd,qc,qb,qa); out(15..0] - decoder.q[15..0];
END;
Drugą metodą jest wywołanie makrofunkcji, w podobny sposób jak w językach programowania, polegające na umieszczaniu w nawiasie za nazwą funkcji nazw węzłów