19
6/3/2011 1 Bieân soaïn: Toáng Vaên On Ñaïi hoïc Baùch Khoa TP HCM Baøi 2 Khaùi nieäm moâ hình theo heä thoáng thöù baäc Bieân soaïn: Toáng Vaên On Ñaïi hoïc Baùch Khoa TP HCM Noäi dung baøi hoïc Heä phöông phaùp thieát keá treân-xuoáng vaø döôùi leân. Nhöõng khaùc bieät giöõa module vaø theå hieän module. Moâ taû 4 möùc tröøu töôïng: haønh vi, luoàng döõ lieäu, möùc coång vaø möùc chuyeån maïch, chuùng bieåu dieãn cuøng moät module. Moâ taû nhöõng thaønh phaàn caàn coù ñeå moâ phoûng maïch thieát keá. Ñònh nghóa khoái kích thích vaø khoái thieát keá.

Chuong_02

Embed Size (px)

DESCRIPTION

Chuong_02

Citation preview

Page 1: Chuong_02

6/3/2011

1

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Baøi 2

Khaùi nieäm moâ hình theo heä thoáng thöù baäc

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Noäi dung baøi hoïc

Heä phöông phaùp thieát keá treân-xuoáng vaø döôùi leân.

Nhöõng khaùc bieät giöõa module vaø theå hieän module.

Moâ taû 4 möùc tröøu töôïng: haønh vi, luoàng döõ lieäu, möùc coång vaø möùc chuyeån maïch, chuùng bieåu dieãn cuøng moät module.

Moâ taû nhöõng thaønh phaàn caàn coù ñeå moâ phoûng maïch thieát keá. Ñònh nghóa khoái kích thích vaø khoái thieát keá.

Page 2: Chuong_02

6/3/2011

2

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Coù hai heä phöông phaùp thieát keá cô baûn: treân-xuoáng vaø döôùi-leân.

Trong heä phöông phaùp thieát keá treân-xuoáng, ta thieát keá khoái möùc ñænh vaø nhaän daïng caùc khoái con caàn thieát ñeå xaây döïng khoái möùc ñænh. Ta chia nhoû theâm nöõa caùc khoái con cho ñeán khi ta gaëp caùc cell laù, ñaây laø cell khoâng theå ñöôïc chia nhoû theâm nöõa.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Sub-block 1

Top levelblock

Sub-block 2

Sub-block 3

Sub-block 4

Leafcell

Leafcell

Leafcell

Leafcell

Leafcell

Leafcell

Leafcell

Thieát keá treân xuoáng

Page 3: Chuong_02

6/3/2011

3

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Trong heä phöông phaùp thieát keá döôùi-leân, tröôùc tieân ta nhaän daïng caùc khoái xaây döïng saün maø ta coù. Ta xaây döïng caùc cell lôùn hôn baèng caùch söû duïng caùc khoái xaây döïng saün. Caùc cell naøy keá ñeán ñöôïc söû duïng ñoái vôùi caùc khoái möùc cao hôn cho ñeán khi ta xaây döïng ñöôïc khoái möùc ñænh trong thieát keá.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Macrocell 1

Top levelblock

Macrocell 2

Macrocell 3

Macrocell 4

Leafcell

Leafcell

Leafcell

Leafcell

Leafcell

Leafcell

Leafcell

Thieát keá döôùi leân

Page 4: Chuong_02

6/3/2011

4

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Thoâng thöôøng hai phöông phaùp treân ñöôïc keát hôïp vôùi nhau. Ngöôøi xaây döïng thieát keá seõ ñònh nghóa ñaëc taû cuûa khoái möùc ñænh. Ngöôøi thieát keá logic quyeát ñònh caùch thöùc maø thieát keá seõ ñöôïc caáu truùc baèng caùch chia chöùc naêng heä thoáng thaønh nhieàu khoái vaø khoái con. Vaøo luùc naøy, ngöôøi thieát keá maïch seõ thieát keá maïch toái öu cho caùc cell laù.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Ngöôøi thieát keá maïch xaây döïng caùc cell möùc cao hôn töø caùc cell laù. Luoàng thieát keá gaëp nhau taïi ñieåm trung gian, ôû ñoù ngöôøi thieát keá maïch ôû möùc chuyeån maïch ñaõ taïo ra thö vieän caùc cell laù baèng caùch söû duïng caùc chuyeån maïch vaø ngöôøi thieát keá möùc logic ñaõ thieát keá töø treân xuoáng cho ñeán khi taát caû module ñaõ ñöôïc ñònh nghóa baèng cell laù.

Page 5: Chuong_02

6/3/2011

5

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Thí duï thieát keá maïch ñeám khoâng ñoàng boä 4-bit. Maïch naøy ñöôïc thieát laäp baèng caùch söû duïng 4 flipflop T kích caïnh aâm (xuoáng). Moãi flipflop T ñöôïc xaây döïng töø flipflop D vaø coång NOT. Ta ñang thieát keá theo caùch coù thöù baäc baèng caùch söû duïng caùc khoái xaây döïng saün. Trong phöông phaùp thieát keá treân-xuoáng, tröôùc tieân ta chæ ra chöùc naêng cuûa maïch ñeám.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

clock

q

D_FF

d

q

reset

T_FF suy ra töø D_FF

Page 6: Chuong_02

6/3/2011

6

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

q

T_FFtff0

q

T_FFtff1

q

T_FFtff2

q

T_FFtff3

clock

reset

q0 q1 q2 q3

Maïch ñeám khoâng ñoàng boä 4-bit

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Maïch ñeám khoâng ñoàng boä 4-bit

T_FF(tff0)

T_FF(tff1)

T_FF(tff2)

T_FF(tff3)

D_FF D_FF D_FF D_FFnot not not not

Page 7: Chuong_02

6/3/2011

7

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Heä phöông phaùp thieát keá

Ñaây laø khoái möùc ñænh. Keá ñeán ta thöïc hieän maïch ñeám vôùi flipflop T. Ta xaây döïng flipflop T töø flipflop D vaø coång NOT. Nhö vaäy, ta ñaõ chia caùc khoái lôùn thaønh caùc khoái con nhoû hôn coù saün cho ñeán khi ta quyeát ñònh khoâng chia nöõa.

Heä phöông phaùp thieát keá döôùi-leân ñi theo chieàu ngöôïc laïi. Ta keát hôïp caùc khoái nhoû xaây döïng saün vaø xaây döïng khoái lôùn hôn.

Ñieàu naøy coù nghóa laø ta xaây döïng flipflop D töø caùc coång logic AND vaø OR hoaëc coù theå töø caùc transistor. Nhö vaäy, luoàng treân-xuoáng seõ gaëp luoàng döôùi-leân ôû möùc cuûa flipflop D.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Module laø khoái xaây döïng saün trong Verilog.

Module coù theå laø moät phaàn töû hoaëc moät taäp coù löïa choïn caùc khoái thieát keá möùc thaáp hôn. Thoâng thöôøng, caùc phaàn töû ñöôïc nhoùm laïi trong caùc module ñeå cho ta chöùc naêng toång quaùt ñöôïc söû duïng ôû nhieàu nôi trong thieát keá.

Module cung caáp chöùc naêng caàn thieát cho “khoái möùc cao hôn” thoâng qua giao dieän port (ngoõ vaøo, ngoõ ra) nhöng che giaáu thöïc hieän beân trong.

Page 8: Chuong_02

6/3/2011

8

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Ñieàu naøy cho pheùp ngöôøi thieát keá söûa ñoåi nhöõng phaàn beân trong cuûa module maø khoâng aûnh höôûng ñeán phaàn coøn laïi cuûa thieát keá.

Trong thí duï maïch ñeám khoâng ñoàng boä, flipflop D vaø flipflop T laø nhöõng thí duï veà module. Module ñöôïc khai baùo baèng töø khoùa module. Töø khoùa endmodule xuaát hieän ôû cuoái phaàn ñònh nghóa module.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Moãi module phaûi coù module_name (ñònh danh cuûa module) vaø module_terminal_list (moâ taû caùc ñaàu cuoái ngoõ vaøo vaø ngoõ ra cuûa module)

module <module_name> (<module_terminal_list>);

..

<module internals>

..

endmodule

Page 9: Chuong_02

6/3/2011

9

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Thí duï: Flipflop T

module T_FF (q, clock, reset);

..

..

<Functionality of T-flipflop>

..

..

endmodule

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Verilog laø ngoân ngöõ haønh vi laãn caáu truùc. Caùc thaønh phaàn trong moãi module coù theå ñöôïc ñònh nghóa ôû 4 möùc tröøu töôïng, phuï thuoäc vaøo nhu caàu cuûa thieát keá. Module hoaït ñoäng gioáng nhau ñoái vôùi moâi tröôøng beân ngoaøi baát chaáp möùc tröøu töôïng maø ôû ñoù module ñöôïc moâ taû. Nhöõng thaønh phaàn beân trong cuûa module ñöôïc che giaáu ñoái vôùi moâi tröôøng.

Möùc tröøu töôïng moâ taû module coù theå ñöôïc thay ñoåi maø khoâng caàn baát kyø thay ñoåi naøo trong moâi tröôøng. Caùc möùc tröøu töôïng naøy seõ ñöôïc khaûo saùt trong caùc chöông tieáp theo. Sau ñaây laø ñònh nghóa toång quaùt cuûa caùc möùc tröøu töôïng naøy.

Page 10: Chuong_02

6/3/2011

10

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Möùc haønh vi hoaëc giaûi thuaät.

Ñaây laø möùc tröøu töôïng cao nhaát ñöôïc cung caáp bôûi Verilog. Module coù theå ñöôïc thöïc hieän nhôø vaøo giaûi thuaät thieát keá mong muoán maø khoâng caàn quan taâm ñeán nhöõng chi tieát thöïc hieän phaàn cöùng. Vieäc thieát keá ôû möùc naøy töông töï nhö laäp trình C.

Möùc luoàng döõ lieäu.

ÔÛ möùc naøy module ñöôïc thieát keá baèng caùch chæ roõ luoàng döõ lieäu. Ngöôøi thieát keá quan taâm ñeán caùch thöùc maø döõ lieäu di chuyeån giöõa nhöõng thanh ghi phaàn cöùng vaø caùch thöùc maø döõ lieäu ñöôïc xöû lyù trong thieát keá.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Möùc coång.

Module ñöôïc thöïc hieän nhôø vaøo caùc coång logic vaø lieân keát noái giöõa caùc coång naøy. Thieát keá ôû möùc naøy töông töï nhö vieäc moâ taû thieát keá döïa vaøo sô ñoà logic ôû möùc coång.

Möùc chuyeån maïch.

Ñaây laø möùc tröøu töôïng thaáp nhaát ñöôïc cung caáp bôûi Verilog. Moät module coù theå ñöôïc thöïc hieän nhôø vaøo caùc chuyeån maïch, caùc nuùt nhôù vaø lieân keát noái giöõa chuùng vôùi nhau. Thieát keá ôû möùc naøy yeâu caàu kieán thöùc veà caùc chi tieát thöïc hieän ôû möùc chuyeån maïch.

Page 11: Chuong_02

6/3/2011

11

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Moâ-ñun

Verilog cho pheùp ta troän vaø töông thích caû 4 möùc tröøu töôïng trong moät thieát keá. Trong coäng ñoàng thieát keá soá, thuaät ngöõ möùc truyeàn thanh ghi (RTL) thöôøng ñöôïc duøng ñoái vôùi moâ taû Verilog söû duïng keát hôïp caáu truùc haønh vi vaø luoàng döõ lieäu, ñöôïc chaáp nhaän bôûi nhöõng coâng cuï toång hôïp logic.

Thoâng thöôøng, möùc tröøu töôïng caøng cao, thieát keá caøng ñoäc laäp vôùi coâng ngheä vaø caøng linh hoaït. Khi ta ñi daàn veà phía döôùi höôùng ñeán thieát keá möùc chuyeån maïch, thieát keá trôû neân phuï thuoäc vaøo coâng ngheä vaø khoâng linh hoaït. Moät thay ñoåi nhoû coù theå gaây ra löôïng thay ñoåi ñaùng keå trong thieát keá.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Theå hieän

Module cung caáp khuoân maãu töø ñoù ta coù theå taïo ra caùc ñoái töôïng thöïc söï. Khi moät module ñöôïc goïi, Verilog taïo ra moät ñoái töôïng duy nhaát töø khuoân maãu. Quaù trình taïo ra caùc ñoái töôïng töø moät khuoân maãu module ñöôïc goïi laø söï theå hieän vaø caùc ñoái töôïng ñöôïc goïi laø nhöõng theå hieän. Trong thí duï sau ñaây, khoái möùc ñænh taïo ra 4 theå hieän töø khuoân maãu flipflop T (T_FF). Moãi T_FF theå hieän moät D_FF vaø coång ñaûo. Moãi theå hieän phaûi coù moät teân duy nhaát.

Page 12: Chuong_02

6/3/2011

12

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Theå hieän

module ripple_carry_counter(q, clk, reset);

output [3:0] q;

input clk, reset;

T_FF tff0(q[0], clk, reset);

T_FF tff1(q[1], q[0], reset);

T_FF tff2(q[2], q[1], reset);

T_FF tff3(q[3], q[2], reset);

endmodule

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Theå hieän

module T_FF(q, clk, reset);

output q;

input clk, reset;

wire d;

D_FF dff0(q, d, clk, reset);

not n1(d, q);

endmodule

Page 13: Chuong_02

6/3/2011

13

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Theå hieän

Khoâng ñöôïc loàng caùc module vaøo nhau.

module ripple_carry_counter(q, clk, reset);

output [3:0] q;

input clk, reset;

module T_FF(q, clk, reset);

<module T_FF internals>

endmodule

endmodule

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Caùc thaønh phaàn moâ phoûng

Moät khi khoái thieát keá ñaõ hoaøn taát, khoái naøy caàn ñöôïc kieåm tra. Chöùc naêng cuûa khoái thieát keá coù theå ñöôïc kieåm tra baèng caùch aùp duïng taùc nhaân kích thích vaø kieåm tra keát quaû. Ta goïi khoái nhö vaäy laø khoái kích thích, coù theå ñöôïc vieát baèng Verilog. Teân toång quaùt cuûa khoái naøy laø testbench.

Page 14: Chuong_02

6/3/2011

14

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Caùc thaønh phaàn moâ phoûng

Coù hai kieåu aùp duïng taùc nhaân kích thích.

Khoái kích thích theå hieän khoái thieát keá vaø kích tröïc tieáp caùc tín hieäu vaøo khoái thieát keá. Khoái kích thích trôû thaønh khoái möùc ñænh. Vôùi thí duï maïch ñeám khoâng ñoàng boä, khoái kích thích quaûn lyù caùc tín hieäu clk vaø reset, kieåm tra vaø hieån thò tín hieäu ngoõ ra q.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Caùc thaønh phaàn moâ phoûng

(Khoái thieát keá)Maïch ñeám khoâng

ñoàng boä.

Khoái kích thích

clk reset

q

Page 15: Chuong_02

6/3/2011

15

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Caùc thaønh phaàn moâ phoûng

Caû hai khoái kích thích vaø khoái thieát keá ñeàu ñöôïc theå hieän trong module möùc ñænh giaû vaø 2 khoái töông taùc nhau thoâng qua giao dieän. Module kích thích kích tín hieäu d_clk vaø d_reset, caùc tín hieäu naøy ñöôïc noái vôùi clk vaø reset cuûa khoái thieát keá. Khoái kích thích cuõng kieåm tra vaø hieån thò tín hieäu c_q, noái vôùi tín hieäu q cuûa khoái thieát keá. Chöùc naêng cuûa khoái ñænh chæ laø theå hieän hai khoái kích thích vaø thieát keá.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Caùc thaønh phaàn moâ phoûng

Khoáikíchthích

d_clk

d_reset

c_q

clk

reset

q

Khoáithieátkeá

Khoái möùc ñænh

Page 16: Chuong_02

6/3/2011

16

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

Ta xaây döïng hai khoái: thieát keá vaø kích thích. AÙp duïng taùc nhaân kích thích ñeán khoái thieát keá vaø giaùm saùt ngoõ ra. Do ta ñang phaùt trieån moâ hình Verilog, ta khoâng caàn bieát caáu truùc chính xaùc vaøo luùc naøy. Ta caàn chuù yù ñeå hieåu quaù trình thieát keá. Cuù phaùp seõ ñöôïc ñeà caäp chi tieát ôû caùc chöông sau.

Khoái thieát keá.

Ta söû duïng heä phöông phaùp thieát keá treân-xuoáng. Tröôùc tieân ta vieát moâ taû Verilog cho khoái thieát keá möùc ñænh, khoái naøy laø maïch ñeám khoâng ñoàng boä ñaõ ñöôïc ñeà caäp ôû caùc slide tröôùc.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

module ripple_carry_counter(q, clk, reset);

output [3:0] q;

input clk, reset;

T_FF tff0(q[0], clk, reset);

T_FF tff1(q[1], q[0], reset);

T_FF tff2(q[2], q[1], reset);

T_FF tff3(q[3], q[2], reset);

endmodule

Page 17: Chuong_02

6/3/2011

17

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

module T_FF(q, clk, reset);

output q;

input clk, reset;

wire d;

D_FF dff0(q, d, clk, reset);

not n1(d, q); // not laø cell maãu cô baûn

endmodule

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

module D_FF(q, d, clk, reset);

output q;

input d, clk, reset;

reg q;

always @(posedge reset or negedge clk)

if (reset)

q = 1’b0; // reset khoâng ñoàng boä.

else

q = d;

endmodule

Page 18: Chuong_02

6/3/2011

18

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

Khoái kích thích.

Ta vieát khoái kích thích ñeå kieåm tra xem thieát keá maïch ñeám khoâng ñoàng boä hoaït ñoäng coù ñuùng khoâng. Ta ñieàu khieån clk vaø reset sao cho hoaït ñoäng bình thöôøng vaø cô cheá reset khoâng ñoàng boä ñeàu ñöôïc kieåm tra. Giaû ñònh chu kyø xung clk laø 10 ñôn vò thôøi gian, tín hieäu reset ôû logic 1 (tích cöïc) trong khoaûng thôøi gian töø 0 ñeán 15 ñôn vò vaø 195 ñeán 205 ñôn vò. q ñeám töø 0 ñeán 15.

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

module stimulus;

reg clk;

reg reset;

wire [3:0] q;

ripple_carry_counter r1(q, clk, reset);

initial

clk = 1’b0; // clk = 0.

always

#5 clk = ~clk; // ñaûo clk moãi 5 ñôn vò // thôøi gian

Page 19: Chuong_02

6/3/2011

19

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

initial

begin

reset = 1’b1;

#15 reset = 1’b0;

#180 reset = 1’b1;

#10 reset = 1’b0;

#20 $finish; // keát thuùc moâ phoûng.

end

initial // hieån thò ngoõ ra

$monitor($time, “output q = %d”, q);

endmodule

Bieân soaïn: Toáng Vaên On – Ñaïi hoïc Baùch Khoa TP HCM

Thí duï

Ngoõ ra moâ phoûng ñöôïc.

0 output q = 0 20 output q = 1

30 output q = 2 40 output q = 3

50 output q = 4 60 output q = 5

70 output q = 6 80 output q = 7

90 output q = 8 100 output q = 9

110 output q = 10 120 output q = 11

130 output q = 12 140 output q = 13

150 output q = 14 160 output q = 15

170 output q = 0 180 output q = 1

190 output q = 2 195 output q = 0

210 output q = 1 220 output q = 2