TR

NG Đ I H C BÁCH KHOA THÀNH PH H CHÍ MINH

ƯỜ

Ạ Ọ

Ố Ồ

KHOA ĐI N – ĐI N T Ệ B MÔN ĐI N T – VI N THÔNG Ệ Ử

Ệ Ử Ễ

Đ ÁN ĐI N T VI N THÔNG 2 Ệ Ử Ễ

Đ tài:ề

TÌM HI U QUY TRÌNH THI T K CHIP VÀ Ế NGÔN NG VERILOG Ữ

Bách Khoa

Đ iạ H cọ

GVHD : TH Y BÙI MINH THÀNH

SVTH : TR N T N LINH Ầ

: PHAN ĐĂNG C

NGƯỜ

: BT03ĐTVT

L PỚ

Tháng 01/2009

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

L I NÓI Đ U

M t danh nhân đã nói: “H c ph i đi đôi v i hành” ấ ớ ả ễ ấ ư ặ ệ ố ớ ự ế ọ ỹ ọ ng n g n nh ng mang tính th c ti n r t cao. Đ c bi ự ắ con đ ng khoa h c k thu t thi câu nói y càng thi L ch s khoa h c và hi n t ị ấ ậ i khoa h c đã ch ng minh đi u đó. ứ câu nói y tuy vô cùng ọ t đ i v i nh ng ai ch n ữ t th c h n bao gi ờ ế h t. ơ ề ộ ọ ườ ử ệ ạ ọ ọ

i tr Tr i qua năm năm h c t p t ng Đ i H c Bách Khoa Thành Ph H ả ạ ọ ậ ạ ườ ầ ọ ề ệ ề ọ i nh ng hi u bi ộ ơ ộ ể ứ ế ữ ư ự ể ẩ ấ ậ ố ạ ậ ỏ ủ ữ ượ ố ớ ộ ờ ệ ử ả ộ ệ ố ồ Chí Minh các th y cô giàu kinh nghi m đã truy n đ t cho tôi r t nhi u ki n ế ấ ạ th c lý lu n cũng nh th c ti n. Đ án môn h c này ổ là m t c h i đ tôi t ng ồ ễ ứ ả ứ ộ “th m th u” nh ng ki n th c mà b n t, m c đ h p, rà s t l ế ợ i tri thân ti p nh n đ c. Nó nh m t công trình nho nh c a b n thân, m t l ư ộ ế ân chân thành đ i v i quí Th y (Cô) khoa Đi n nói chung và b môn Đi n t nói ầ riêng.

ỡ ậ ủ ầ Em xin chân thành c m n s giúp đ t n tình c a Th y Bùi Minh Thành Vi n thông đã giúp em h n thành đ án ả ơ ự ộ ệ ử ễ ầ ồ ồ cùng các Th y cô trong b môn Đi n t môn h c .ọ

Ph n I: Quy Trình Thi

t K Chip

ế ế

Trang 2

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

i trong h u h t các v t d ng đi n t ồ ạ ở Các con Chip hi n nay đang t n t ệ ậ ụ ầ ấ ớ ủ ấ ế ế ớ ợ ữ ữ ệ ậ ữ ứ ẻ ạ ề ề ng cao. ớ thu t ph i có ch t l ả ự ỏ ề ặ ẹ ấ ượ ữ ậ ỹ

t k m t ASIC (Application Specific Integrated Circuit): ế ế ộ ệ ử , i ngành công nghi p nh n th y vai trò đóng góp to l n c a Chip do đó trên th gi ệ ậ ộ đ s n xu t ra nh ng con chip hay nh ng vi m ch tich h p này hi n đang là m t ể ả trong nh ng lĩnh v c m i m và h a h n nhi u ti m năng. V y quy trình và nh ng đòi h i v m t k I. Quy trình thi

M ch tích h p ng d ng c th ASIC là linh ki n đ ạ ụ c s n xu t ch a h ấ ượ ả ư ệ ỉ ụ ể ấ ở ạ ổ ầ ề ắ ấ ầ ộ ấ ả ế ạ ữ ế ẽ ầ nồ ợ ứ d ng t ng quát. Quá trình ch t o ch nh (hay m t ph n) b i nhà cung c p ASIC ế ạ ầ ở ồ ban đ u này r t ph c t p, m t nhi u th i gian và là ph n đ c ti n nh t trong t n ứ ạ ề ờ b quá trình s n xu t. K t qu c a quá trình ch t o ban đ u này s là nh ng chip ấ ộ silicon có các d i transistor ch a n i v i nhau. ấ ả ủ ư ố ớ ả

Quá trình ch t o sau cùng là quá trình k t n i các transistor v i nhau, s đ ế ạ i thi t khi ng ườ ế ế ộ c ẽ ượ ớ ự i này mu n th c ố ườ ng có th th c hi n đi u này trong ệ ể ự ề h n t t k chip có m t thi ồ ấ hi n lên trên ASIC. Nhà cung c p ASIC th ấ ệ vài tu n và g i đây là th i gian làm thay đ i h n t n. ế ố t k c th và ng ế ế ụ ể ườ ổ ồ ồ ờ

ầ Có hai lo i linh ki n ASIC, đó là d i c ng (gate array) và cell chu n (standard ả ổ ọ ạ ệ ẩ cell).

1. D i c ng (Gate Array)

ạ ả ổ ả ổ : Đ c chia thành hai lo i d i c ng là d i c ng

ặ ơ ả ượ c chia kênh hay có kênh và d i c ng không có kênh: ả ổ ồ ộ ố ữ ả ổ ấ ơ ả ượ ử ụ ả ổ đ ượ - D i c ng có kênh đ ượ ả ộ ơ ả ế ố ể ờ ủ ầ

- D i c ng không có kênh đ ả ổ ơ ả

ấ ớ ấ ụ ươ ứ ừ

vài ngàn c ng t ổ ế ố ng c ng này khó có th đ ể ượ ử ụ c s n xu t m t ho c vài hàng cell c b n ngang ộ qua chip silicon. M t cell c b n bao g m m t s transistor. Các kênh gi a các hàng cell c b n đ ơ ả c s d ng đ liên k t n i các cell c b n trong th i gian c a quá trình s n xu t sau cùng theo yêu c u khách hàng. ấ ả c s n xu t v i r t nhi u cell c b n ngang ề ượ ả ế ố qua chip silicon và không có các kênh chuyên d ng cho vi c liên k t n i. ệ ng đ ng (nh c ng NAND 2 Các d i c ng ch a t ư ổ ổ ả ổ ươ ng ho c h n n a. Do không ngõ vào) đ n vài trăm ngàn c ng t ng đ ươ ặ ơ ữ ươ ế i h n trên các d i c ng có kênh, gian đ nh tuy n (đ liên k t n i) b gi ả ổ ế ị ớ ạ ể ị ố ổ c s d ng h t t ng s c ng cho nên s l ế ổ ổ ố ượ có s n (kho ng t ả ừ

ấ ỗ ợ ẽ 70 đ n 90%) ế ữ ơ ả ề ẵ ư ệ ổ ả ổ ứ ứ ạ ẫ ề ườ ộ ư ạ ủ ạ ế ứ ạ ượ ị ạ ả ấ ướ ạ c đ c tr ng hóa b i ng ở ồ - Th vi n các cell do nh ng nhà cung c p d i c ng h tr s bao g m: các c ng logic c b n m u, thanh ghi, macro c ng và macro m n. Các macro c ng và macro m m th ng có đ ph c t p c a MSI và LSI, ch ng h n nh m ch ghép kênh, m ch so sánh và m ch đ m. Macro ẳ i d ng các m u cell c b n. c ng đ ơ ả c đ nh nghĩa b i nhà s n xu t d ẫ ứ ở ư i thi Khi so sánh các macro m n đ ườ ư ề ượ ặ vi c ch ra đ r ng các bit trong m ch so sánh hai ngõ vào ch ng h n. ẳ ạ ộ ộ t k , nh ế ế ạ ệ

Trang 3

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

2. Cell chu n (Standard cell): ỉ ẩ ẩ ề ệ ệ ơ ả ấ ướ ả c s n xu t tr ượ ả ộ ượ ậ ừ ụ ề ấ ệ ư ệ ứ ộ ứ ạ ủ ả ổ ứ ữ ẳ - Các linh ki n cell chu n không có khái ni m v cell c b n và không có c trên chip silicon. Nhà s n xu t t o thành ph n nào đ ấ ạ ầ ra các m t n tùy thu c khách hàng cho t ng giai đo n c a quá trình s n ả ạ ủ ặ ạ ớ c t n d ng hi u qu h n nhi u so v i xu t chip, có nghĩa là silicon đ ả ơ các d i c ng. Nhà s n xu t cung c p các th vi n macro c ng và macro ả ấ ấ m m ch c nh ng ph n t ạ có đ ph c t p c a LSI và VLSI , ch ng h n ầ ử nh b đi u khi n, ALU và b vi x lý. ề ư ộ ề ử ể ộ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

ồ ứ ề ư ệ ệ ả ổ ệ ề ộ ng đ Ng i ra th vi n macro m n còn ch a nhi u m ch ch c năng RAM mà ta ạ ứ c m t cách có hi u qu các linh ki n d i c ng; ả ẫ c th c hi n hi u qu h n trong các m u ệ ườ ả ơ ệ ệ ượ ự ạ không th th c hi n đ ể ự ượ M ch ch c năng ROM th ứ cell c b n. ơ ả

SYSTEM REQUIREMENTS

SPECIFICATION

SPECIFICATION

MODELLING

LOGIC DESIGN

SYNTHESIS

LOGIC DESIGN

VERIFICATION

TEST GENERATION

SIGN-OFF / Mapping

PHYSICAL

MANUFAC / Place & Route

/ Configuration data

PROTOTYPE

PROTO VERIFICATION

SYSTEM TESTING

Mô hình lu ng thi t k ASIC ồ ế ế

t k d a trên FPGA (Field Programmable Gate Array): ế ế ự

D i c ng l p trình đ c s n xu t h ượ ạ ệ ồ ư c d ng tr c tính đ c l p v i thi ộ ậ ấ ấ ượ ỗ ế c và nh ng kh i này đ ề ộ ố ế ượ ượ ậ ượ ậ ằ ố ể ấ ạ ứ ậ

II. Quy trình thi ng là linh ki n đ n ch nh ườ ỉ ậ ả ổ ượ ả ề t k . M i nhà s n xu t FPGA đ u nh ng v n duy trì đ ả ế ế ớ ẫ đăng ký đ c quy n các ki n trúc FPGA c a mình. Tuy nhiên, nh ng ki n trúc này ộ ữ ủ ố ớ s bao g m m t s kh i logic l p trình đ c n i v i ữ ố ồ ẽ c. Đ c u hình cho m t linh nhau b ng các ma tr n chuy n m ch l p trình đ ể ộ ạ ậ ki n cho m t ch c năng c th , nh ng ma tr n chuy n m ch này đ c l p trình ụ ể ượ ậ ể ệ đ đ nh tuy n các tín hi u gi a nhi u kh i logic riêng r . ẽ ữ ể ị

Trang 4

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ữ ề ộ ế ệ ố

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

Nh v y v i các tính năng c a ASIC và FPGA s đ ớ ủ ẽ ượ ớ ẩ ễ ọ ự ườ ư ậ ủ ả ứ ệ ậ ữ ơ c ti n hành, trong khi thi ế ẫ ụ ủ ụ t k này có th đ ầ ế ự ế ế ấ ạ ệ ố c l p trình ngay l p t c v i chi phí t ậ ứ ươ ớ ượ ậ ạ ậ ạ ẽ ồ ồ

V i nh ng lý do trên, các thi c ch n l a tùy vào giá ng d dàng và thành c a s n ph m. Tuy nhiên v i FPGA, vi c l p trình th ệ nhanh chóng, ch c năng tùy thu c khách hàng. H n n a các FPGA cho phép vi c ộ t k bên trong b trí bo m ch in b ng công c CAD đ ế ế ượ ằ ạ ố ầ ứ t. Th t c này cho phép ta ki m tra s tích h p ph n c ng FPGA v n đang h n t ợ ể ồ ấ c s a và ph n m n. N u vi c ki m tra h th ng th t b i, thi ể ượ ử ể ệ ề ng đ i đ i và linh ki n khác FPGA đ ố ổ ệ ệ th p. V i các chip FPGA và CPLD d ng SSP (l p trình ngay trên h th ng) hi n ấ ớ nay, vi c l p trình l ệ ậ ớ ướ ữ ệ ố c tiên h ế ế ơ ng tr ỏ ớ ạ ế ộ

Verilog RTL Coding

Verilog  model

Verilog  test bench

Functional/Gate simulation  & Verification

sdc

Verilog  Netlist

Logic Synthesis

ngc

ucf

Physical Layout

par

Device Configuration

bit

ng l ấ ộ ự ệ ố ệ ố i s h n t n d dàng v i chi phí không đáng k . ễ ể ớ ể ng đ n FPGA đ t k th ế ướ ế ế ườ c đ nh t k đ ki m tra h th ng và có th i gian s n xu t nh . K đ n, thi ờ ị ế ế ượ ể ấ ả ế ế quy mô l n h n. Các th a hi p thi t k i đ n m t ASIC đ s n xu t ng l h ấ ở ể ả ệ ỏ ướ FPGA sang ASIC. Thí d nh th i gian i t c xem xét khi đ nh h ph i đ ướ ả ượ ụ ư ờ ạ ừ ị gi ứ xu t hi n trong ASIC do t c đ th c hi n ch c dài có th không bao gi ệ ờ ữ năng đ ể c c i ti n. ượ ả ế

Mô hình lu ng thi t k FPGA ồ ế ế

Trang 5

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

III. Công ngh FPGA: ệ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

A. Nguyên lý Antifuse: 1. C u trúc Antifuse: ấ

ị ầ ế ẽ ơ Antifuse: c u chì ngh ch. ầ Difussion: khuy ch tán. L p trình b ng dòng đi n. ệ ằ ậ ư

2.

ướ

ệ ớ

bào: (a) Ph n giao nhau (b) Hình v đ n gi n ả (c) Antifuse ho t đ ng nh 1 công t c ắ ạ ộ u khuy t đi m: ể ế Ư c nh . Kích th ỏ Quy trình ch t o khác v i công ngh CMOS. ế ạ ế

B. Nguyên lý t SRAM:

ram: ế ấ

1. C u trúc t bào S

Hình 2: C u trúc t bào SRAM (hãng Xilinx) ấ ế

2.

Ư • Tái s d ng và nâng c p thi ế ế ễ ậ ổ ệ ố t k d dàng. C p nh t và thay đ i h th ng ậ ể : u khuy t đi m ế ử ụ ấ ự ế ầ ứ ệ

c l n h n antifuse ấ b ng tái c u hình ph n c ng tr c ti p. Công ngh CMOS ằ • D li u b m t khi ngu n cung c p b ng t. Kích th ồ ữ ệ ị ấ ị ắ ấ ướ ớ ơ

EPROM: C. Nguyên lý UVEPROM VÀ EEPROM: 1. Nguyên lý h at đ ng Transistor ộ ọ

Trang 6

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

Hình 3: C u trúc transistor EPROM (hãng Xilinx) ấ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

ế

2. Ưu khuy t đi m:

ộ ớ ậ ệ

ể Tái l p trình không c n b nh ng Không tái c u hình tr c ti p trên m ch. ầ ự ế ấ i. Di n tích nh . ỏ ồ ạ

Ph n II: Ngô ng Verilog

I. Gi i thi u v Verilog: ớ ệ ề

1. Khái quát:

ữ t k ph n c ng s d ng đ mô t ph n c ng chính (g m VHDL và t k các i thi Verilog là m t trong hai ngôn ng mô t ườ ộ ượ ế ế ồ , thi ả ế ế ể ầ ứ Verilog HDL) đ ử ụ . h th ng s , ví d nh máy tính hay linh ki n đi n t ệ ử ệ ố ả ầ ứ ệ c ng ụ ư ố

ượ ễ ọ ễ ử ụ ẩ c chu n h theo ượ c ữ ấ ố ố ơ chu n IEEE vào năm 1995 và 2001. Verilog r t gi ng ngôn ng C và đ gi ớ ứ ử ụ

Verilog d h c và d s d ng h n VHDL. Verilog đ ẩ i chuyên môn nghiên c u, s d ng nhi u. c s d ng đ thi Verilog HDL có th đ ể ượ ử ụ ề ể t k h th ng s ế ế ệ ố m c cao nh các mô hình đ c tr ng đ n các m c th p nh ế ư ặ ư ụ ở ứ ệ ạ ố ộ ự ả ứ nhi u m c ề ố ở ư khác nhau, ví d ấ ứ các c ng mô hình b trí dây, đi n tr , transistor trên m t m ch tích h p; mô t ổ ở ả ợ ữ ệ thanh ghi và s di chuy n d li u logic, flip_flop trong h th ng s ; mô t ể ố ệ ố gi a các thanh ghi (RTL - Register Transfer Level). ữ

2. M c đích s d ng Verilog HDL: ử ụ ụ

ố ế Ở ấ ệ ố ộ ệ ố c p đ chi ti ộ ồ ể m c c ng không còn s ớ ệ ố ậ ề ữ ữ ề H th ng s là m t h th ng ph c t p b c cao. ậ ầ ư t k ế ế ở ứ ổ ế ế ủ ầ ứ ồ ủ ổ i ph c t p các liên k t không theo ch c năng c a thi ế ủ ả ứ ạ ỹ ư ệ ữ ứ ổ ướ ứ ậ ỹ ư

ế ế ấ t nh t, ứ ạ chúng có th bao g m hàng nghìn thành ph n nh : các transistor ho c các ặ ử c ng logic, cho nên v i h th ng s l n, thi ố ớ ổ d ng n a. Qua nhi u th p k , gi n đ logic c a các thi t k logic cũng không ồ ả ỷ ụ m t m c còn nhi u n a. Ngày nay, s ph c t p c a ph n c ng đã tăng lên ứ ở ộ ứ ạ ủ ự ạ đ mà gi n đ c a c ng logic h u nh vô ích khi nó ch bi u di n m t m ng ộ ỉ ể ễ ư ầ ộ t k . T nh ng năm l ữ ế ế ừ ướ ầ ứ ng theo ngôn ng mô t 1970, các k s đi n và máy tính đ i h ph n c ng ả ữ ph n c ng n i b t trong k thu t là Verilog và (HDL). Hai ngôn ng mô t ổ ậ ầ ả t k công ngh thích s d ng Verilog h n. VHDL nh ng nh ng nhà thi ơ ử ụ ệ ế ế ữ ố ở h th ng s t k và mô t Verilog cho phép các nhà thi ả ệ ố ế ế t k b ng máy các công c thi ế ế ằ ề t k logic thi ự ỗ ợ ừ ụ ứ t k ế ế ở ữ nh ng m c đ khác nhau. ứ ộ ể

nhi u m c đ khác nhau và có s h tr t ộ tính đ giúp cho vi c x lý thi ệ ử ơ ả ủ ạ ế ế ạ ể Cách s d ng c b n c a Verilog HDL trong thi ỏ ợ ấ ướ

ả ạ ứ ệ ố ấ ố ụ ử ạ ẫ ộ ệ ơ ơ ể ạ ế ố ậ ượ t k dùng Verilog trên FPGA s ti t k m ch tích h p là mô c khi chuy n sang s n xu t. M c ụ ả ể ủ ử ụ ạ m t cách chính xác ch c năng c a b t kỳ h th ng s nào và n p ủ ả ộ ng trình t o m u lên FPGA, ví d nh máy tính, các b vi x lý,… tuy ư t k m c th p h n trong ấ ế ế ứ ữ ộ c th c hi n trên VLSI đ đ t đ n t c đ c c đ i và có di n tích ộ ự ạ ệ t ki m chi ệ ế ế ẽ ế ử ụ t k và t o m u trên FPGA tr ph ng thi ẫ ế ế tiêu c a Verilog không ph i t o ra nh ng chip VLSI mà s d ng Verilog đ ữ mô t ch ươ t c đ ch m và lãng phí di n tích h n. Nh ng thi ố Verilog đ ự c c ti u. Tuy nhiên s d ng thi ự ể phí và th i gian thi ờ ệ ử ụ t k . ế ế

Trang 7

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

II. Các ki u d li u trong Verilog: ể ữ ệ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

Có 2 ki u d li u:

ữ ệ

ng c tham chi u ộ ầ ố ượ ượ d ng vô h ế ở ạ ọ ượ ồ ầ ẽ ặ ừ ng có nhi u bit và đ ề ộ

:

ng d li u net là kh năng t ng h p hình 3.7, s ể ữ ệ - Ki u d li u net. ể ữ ệ - Ki u d li u thanh ghi. ể ữ ệ N u các đ i t ặ ng d li u net (wire, wand, wor, tri, supply0, supply1) ho c ố ượ ế regiter (reg) đ ng này c khai báo mà không có t m, theo m c đ nh các đ i t ượ ặ ị ầ r ng 1-bit và đ c khai ướ . N u m t t m đ ộ ế ượ c g i là vector. M t vector có th đ báo, đ i t ể ượ c ố ượ ộ tham chi u trong tr ng thái t n b , m t ph n ho c t ng bit riêng r khi c n. ầ ộ ế ạ 1. Ki u d li u net ể ữ ệ ố ượ ữ ệ ả ổ ở Các đ i t ễ ợ , đ ượ ệ ự ế ố ậ ể ế ơ ả ủ ể ể ị ế ế ụ ẽ ể ể ế ố ế c ch ra ẽ ỉ bi u di n và mô hình s k t n i v t lý các tín hi u. M t phép gán trong ộ verilog là c ch c b n đ gán giá tr đ n các ki u d li u c a net và ơ ữ ệ register. C th là, phát bi u gán ti p t c s gán giá tr đ n b t kỳ ki u nào ụ ể ấ ị ế trong các ki u d li u c a net và do v y k t n i đ n m t đ ự ế ng dây th c t ộ ườ ậ ữ ệ ủ ể trong m ch đi n suy ra đ c. ạ

Wire: M t tín hi u ki u wire bi u di n cho m t dây n i trong m ch thi ượ ể ễ ạ ố

ể ể ế ố ọ ử ế t ộ c dùng đ k t n i các c ng logic, các module. Các tín ặ c gán trong các hàm ho c ượ giá tr c a nó và nó ị ủ ư ặ ượ ế c k t c gán giá tr b ng các l nh gán đ ng th i ho c đ ệ ổ

ệ ệ ộ k và đ ổ ế ượ c đ c, không đ hi u ki u wire ch đ ỉ ượ ể ệ các block. Tín hi u ki u wire không l u tr ể ệ ph i đ ờ ồ ị ằ ả ượ n i vào các output c a các c ng logic, các module. ủ ố Cú pháp:

Wire [msb : lsb ] wire_variable_list ;

ộ ộ ổ ố ủ ẽ ượ ổ

Wor: Mô hình OR- n i dây c a vài m ch kích đang kích cùng m t net. ợ ộ Wand: Mô hình AND- n i dây c a vài m ch đang kích cùng m t net. M t ạ ộ M t c ng OR s đ ố c t ng h p. ẽ ượ ổ ạ c t ng h p. ủ ợ c ng AND s đ ổ

2. Ki u d li u Register : ể ữ ệ

giá tr t Ki u d li u register l u gi ữ ữ ệ ị ừ ộ ể ể m t phát bi u ố ượ ủ ụ ữ ư ư ủ ụ ế ế ỏ ng này l u gi ộ ủ ụ ả ậ ữ ệ ủ ợ ộ ụ ạ ượ ử ụ ề ị ướ ở ữ ủ ụ ư ạ ể ữ c duy trì cho đ n phép gán th t c k ti p cho ki u d ế ể gán th t c đ n ế phát bi u gán th t c k ti p và có ý nghĩa là đ i t ị giá tr ộ trên các chu kỳ delta mô ph ng. Phép gán th t c là m t phép gán cho m t c ki u d li u c a register và không hàm ý r ng m t thanh ghi v t lý s đ ẽ ượ ể ượ c s d ng cho m c đích này. Phép gán đ t ng h p , m c dù phép gán đ c ổ s d ng đ gán giá tr d i nh ng đi u ki n kích kh i, ch ng h n nh các ư ẳ ệ ể ử ụ giá tr trong m t ki u d li u ữ ệ phát bi u if và case. Phép gán th t c l u gi ộ ị ể c a register và đ ữ ủ ể ế ế ủ ụ ượ li u c a register đó. ệ ủ

3. Thông s :ố

Trang 8

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ộ ể ữ ệ ỉ ề ố ị ố ẽ ị ử ụ ượ ị ủ ụ ộ ố ớ ể M t ki u d li u thông s s đ nh nghĩa m t h ng. Ch có các h ng ằ ộ ằ ợ c s d ng v i ph n m m t ng h p. (không th c ) đ thông s nguyên ổ ầ ớ ự ố Gi ng nh m i ki u d li u khác, v trí c a chúng s đ c xác đ nh chúng là ẽ ượ ể ữ ệ ư ọ t n c c đ i v i m t module hay là c c b đ i v i m t phát bi u always riêng ồ ụ ố ớ ộ ộ tệ bi

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

Thí dụ:

Parameter A = 4’b 1011, B = 4’b 1000 ;

Parameter Stop = 0, Slow = 1, Medium = 2, Fast = 3;

4. S nguyên: ố

ể ượ ể ế ị giá tr s . Không có t m nào đ ị ố ượ ế ỉ ầ ố ạ c dùng đ khai báo các bi n có công d ng Các ki u d li u nguyên đ ụ ữ ệ t ng quát đ s d ng trong các vòng l p, chúng không có ý đ nh ph n c ng ầ ứ ặ ể ử ụ ổ ộ ố c ch rõ khi m t đ i tr c ti p và l u gi ự ữ ư t ế . Đây là các s nguyên có d u và t o ra các k t c khai báo ng nguyên đ ấ ượ ượ qu d ng bù 2. ả ạ

Thí dụ: integer N;

5. T p giá tr : ị ậ

ng d li u wire và d li u reg có th có nh ng giá tr sau : Các đ i t ị ể ữ ữ ệ ữ ệ

ặ ặ

ạ ở

ố ượ 0 1 X Z Bi n reg đ ng trình. Bi n wire ạ ươ ổ ị ầ ế ế không đ đ u ch ở ầ ị

ỡ ủ ặ

logic 0 ho c sai logic 1 ho c đúng giá tr logic không xác đ nh ị tr ng thái t ng tr cao c a c ng ba tr ng thái ủ ổ c gán giá tr ban đ u là X ượ c n i v i b t kỳ cái gì cũng có giá tr là X. ượ ố ớ ấ Có th xác đ nh c c a thanh ghi ho c dây trong khai báo. ể ị : Ví dụ reg [7:0] A,B; //thanh ghi A và B có 8 bit t 0 – 7, bit cao nh t là bit 7 ừ ấ (MSB).

wire [3:0] data; //dây data có 4 đ ừ ườ

c a thanh ghi. Ví ớ 0 – 3. ư ơ ủ 16 bit Vùng nh : Vùng nh đ ớ ượ d m t vùng nh g m 1024 t ụ ộ ớ ồ ng t c đ nh nghĩa gi ng nh vect ố ị , m i t ừ ỗ ừ

ớ ầ ẽ

ừ ủ ế ể ằ ộ ớ c a vùng nh , reg [15:0] Mem [1024:0]; Kí hi u Mem[0] s tham chi u đ n vùng nh đ u tiên . . . ế ệ Chú ý r ng không th tham chi u đ n m t bit trong 1 t ố ế ế mu n làm đi u này ph i chuy n d li u vào m t thanh ghi trung gian. ể ữ ệ ề ả ộ

III. Mô t module: ả

Đ nh nghĩa module luôn luôn b t đ u b ng t ị ừ ằ ệ ả

, khóa module. Tên module ắ ầ c tiên danh sách port, khai báo port, thông s (parameter) ph i hi n di n tr ệ ướ ố trong đ nh nghĩa module. Danh sách port và khai báo port ch hi n di n khi ệ ỉ ệ ị module có port t ng bên ng i. ồ

ườ Năm thành ph n trong module là:

ữ ệ

ơ

Trang 9

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ng tác v i môi tr ớ ươ ầ - Các khai báo bi nế - Các phát bi u lu ng d li u. ể ồ - Th ể hi n c a các module th p h n. ấ ệ ủ - Các kh i hành vi. ố - Task ho c function. ặ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

Các thành ph n này có th ầ ể ở ấ ầ ơ ứ . Phát bi u endmodule là phát bi u sau cùng trong đ nh nghĩa module. b t kỳ n i nào trong module và không c n th ể ể ị t ự

ầ (ngo i tr ạ ừ ọ ầ module, tên module và endmodule) là tùy ch n, ọ ề t k . Verilog cho phép nhi u ươ c đ nh nghĩa trong m t t p tin duy nh t và không c n th t . ứ ự ầ ng thích theo yêu c u thi ế ế ấ ộ ậ

T n t và các phát bi u đi u khi n: ể ề ể ố ử M i thành ph n có th tr n l n và t ể ộ ẫ module đ ượ ị IV.

: ố ử

G m các t quan h so sánh 2 t n h ng và tr ra giá tr logic. Đúng là n t ố ử ệ ạ ả ố ị

1. T n t ồ 1, sai là 0.

N u b t kì bit nào không xác đ nh thì k t qu ra là không xác đ nh . ế ấ ế ả ị ị

> : l n h n. ớ ơ

>= : l n h n ho c b ng ớ ơ ặ ằ

< : nh h n ỏ ơ

<= : nh h n ho c b ng ặ ằ ỏ ơ

== : b ng logic ằ

!= : khác

Các t n t đi u ki n ố ử ề ệ

! : đ o logic ả

&& : AND logic

|| : OR logic

Các t n t set bit ố ử

~ : đ o bit ả

& : AND

| : OR

^ : XOR

~& : NAND

~| : NOR

Các t n t khác ố ử

{,} : ghép thanh ghi ho c dây ặ

<< : d ch trái thanh ghi ị

>> : d ch ph i thanh ghi ả ị

?: : đi u ki n ệ ề

t m t module gi i đa h p t Ví dụ: dùng đi u l nh assign đ vi ề ệ ả ợ ừ ườ ng sang 4 đ ng (b n có th t vi t gi 2 đ 3 sang 8 hay 4 sang 16) i đa h p t ườ ể ự ế ạ ể ế ả ộ ợ ừ

Trang 10

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

module demux(data, in1, in0, out0, out1, out2, out3);

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

input data; input in0,in1; output out0,out1,out2,out3; assign out0= data&(~in1)&(~in0); assign out1= data&(~in1)&(in0); assign out2= data&(in1)&(~in0); assign out3= data&(in1)&(in0);

endmodule

ể : Các c u trúc đi u khi n ề ấ

2.

ấ ệ ể ế ằ ườ ậ ặ ữ ấ ấ khóa begin và end trong Verilog HDL. Nh đã nói ầ Verilog r t phong phú các câu l nh đi u khi n có th s d ng trong ph n ể ử ụ ề i l p trình b ng ngôn ộ ớ t l n nh t chính là thay d u ngo c {} trong ngôn ng C ữ ặ trên, d u ngo c ấ ư ừ ở th t c. H u h t chúng r t quen thu c v i nh ng ng ầ ủ ụ ấ ng C. Đi m khác bi ệ ớ ể ữ b ng t ằ {,} dùng đ n i chu i các bit. Có các lo i c u trúc sau: ạ ấ ể ố ỗ

C u trúc if . . . else ấ

C u trúc case : không gi ng c u trúc case trong C ấ ố ở ầ ệ ch không c n l nh ỗ ấ break.

Ví d :ụ

case (State)

st0: State = st1; st1: State = st2; st2: State = st3; st3: State = st0;

endcase

ồ ặ các module nên bài vi Ng i ra còn có các vòng l p for, while và repeat. Tuy nhiên chúng r t ấ ề t này s không đ ẽ ử ụ ế ả ệ hi m khi s d ng trong vi c mô t ế c p đ n. ậ ế

ộ ạ ấ ế Ví dụ: m t module 3 tr ng thái dùng always và c u trúc if . . .else, n u tr ng thái ế ẽ ở ạ ằ ngõ Con là 1 thì ngõ ra b ng ngõ vào, n u Con là 0 thì ngõ ra s t ng tr cao. ở ổ

module tristate(In, Con, Out);

Trang 11

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

input In, Con; output Out; reg Out; always begin if (Con==1'b1) Out=In; else Out=1'bz;

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

end

endmodule

Ví dụ: m t module so sánh 2 s A và B 4 bit ộ ố

module sosanh(A, B, A_GT_B, A_EQ_B, A_LT_B);

input [3:0] A,B; output A_GT_B, A_EQ_B, A_LT_B; reg A_GT_B, A_EQ_B, A_LT_B; always begin if(A==B) A_EQ_B=1’b1; else A_EQ_B=1’b0; if(A>B) A_GT_B=1’b1; else A_GT_B=1’b0; if(A

V. Phép gán (assignment) trong Verilog:

ố ử gán dùng đ gán k t qu tr v c a 1 bi u th c(hàm logic). ả ả ề ủ ứ ế

T n t Phép gán đ ng th i: phép gán này ch dùng đ gán giá tr bên ng i các ể ể ể ờ ị ở ồ ỉ ồ block

signal1 = signal2;

Syntax: assign ví d :ụ assign Phép gán tu n t ch dùng đ gán giá tr bên trong các block. Có 2 lo i phép a = b & c; ể ầ ự ỉ ạ ị

c xem xét gi ng nh phép gán trong ngôn ng C. Tín hi u s gán non-blocking assignment " <= " và blocking assignment "=". ố ữ ệ ẽ c s d ng làm giá tr cho ị ẽ ượ ử ụ ư ị ớ i. đ ượ tín hi u đó cho l nh ti p theo phía d ệ

Blocking đ ượ c gán giá tr ngay l p t c. và giá tr m i này s đ ị ệ Non-Blocking đ ậ ứ ế ượ ướ ố ư D ờ ờ ờ ồ c th c hi n. Tín hi u s đ ươ D ẽ c xem xét gi ng nh phép gán đ ng th i các l nh gán ệ ồ t sau khi c gán đ ng th i sau kho n th i gian ả ả c gán giá tr sau kho n ị ẽ ượ ệ ệ t . Giá tr m i này s không s d ng làm giá tr cho tín hi u đó, tín ệ ử ụ ị ớ ẽ i. Giá tr m i s ế non-blocking trong 1 block s đ ẽ ượ các l nh trong block đ ự ệ th i gian ờ ị hi u v n l y giá tr cũ s d ng cho l nh ti p theo phía d ử ụ ướ ẫ ấ ệ c s d ng cho l n th c hi n block ti p theo. đ ệ ự ượ ữ ụ ị ớ ị ầ ệ ế

Trang 12

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

Ví d :ụ Begin a = 2;

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

b = a+1;

a <= 3; c = a;

ể và s d ng blocking assignment trong always block dùng đ mô t ả Đ ngh s d ng nonblocking assignment trong always block dùng đ mô t ả ệ h ị ử ụ ử ụ ể end ề h tu n t ệ ầ ự h p. t ổ ợ

ấ ứ đ ư ượ ồ

ơ ở ự c s d ng đ t ng h p ra các b ch t (latch), các ể ượ ử ụ ờ ể ổ ố ộ ợ

Always block là c u trúc c s trong mô hình m c RTL. Các always block c xem nh là các module th c thi đ ng th i. Always block có th đ h p. ặ ệ ổ ợ ượ ự ệ ọ ở flip-flop ho c h t ố ậ ủ ạ ố ạ khóa or ). c g i th c thi các l nh bên trong block b i các s ki n ự ệ ặ c m nh n v m c logic, c nh lên(posedge), c nh xu ng(negedge) c a 1 ho c ả nhi u tín hi u ( các tín hi u cách nhau b ng t ằ Kh i always đ ề ứ ệ ừ ề ệ

thi h p nh sau: Syntax: always @(event_1 or event_2 or ...) begin: name_for_block ... statements ... End ề ị ử ụ ể ả ế ế ệ ồ ợ ư

Đ ngh s d ng always block đ mô t always @( t ấ ả t c các tín hi u input c a h t ệ t k h t h p ủ ệ ổ ợ ở ứ trong list s ki n m c ự ệ logic)

thi t k h tu n t nh sau: ị ử ụ ể ả ế ế ệ ầ ự ư begin … end ề

Đ ngh s d ng always block đ mô t always @(posedge clk or negedge rst_)

begin

if (rst_ == 1'b0) { … } else {

… }

end

VI.Mô hình structural và procedural:

c s d ng đ mô t thi t k Các phát bi u th t c trong Verilog đ ủ ụ ể ượ ử ụ ể ả ế ế ở ứ m c tr u t ừ ượ

Trang 13

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ng cao (algorithmic level, RTL level). ứ ể ự ệ ấ Các phát bi u này cung c p các cách th c cho vi c th c thi các thi ỏ ế ế t k ự s gây ra s ứ ạ ớ ự ả ẽ ậ c sinh ra. ph c t p. Tuy nhiên v i s thay đ i nh trong cách l p trình mô t ổ thay đ i l n v m ch ph n c ng đ ượ ổ ớ ề ạ ầ ứ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

Các phát bi u th t c ch đ c s d ng bên trong các th t c (always, ủ ụ ỉ ượ ử ụ ủ ụ ể function …).

Input

H t

h p

ệ ổ ợ

Outpu t

VII. Mô hình m t s thành ph n logic c b n: ộ ố ơ ả ầ

Các giá tr ngõ ra ch ph thu c vào giá tr hi n th i c a ngõ vào nên khi ng ờ ủ ị ệ ộ ị ỏ vào thay đ i ng ra s thay đ i theo. ỉ ụ ổ ổ

Đ mô t ủ ộ ị ữ ể ệ d ng l nh gán đ ng th i. ụ

A

C

B

S

Half Adder

C = A and B;

assign C = A & B;

S = A or B;

assign S = A ^ B;

ẽ ỏ s ph thu c vào giá tr ngõ vào c a ngõ ra. Trong verilog s ụ ả ự ờ ồ ả ộ ộ b c ng bán ph n ầ Ví d : Mô t ụ

A B S C

0 0 0 0

0 1 1 0

1 0 1 0

1 1 0 1

VIII. T i u h mô hình: ố ư ố

Miêu t i u hóa mà có th đ ả ự ể ượ ằ ố ư ả ế ủ ữ ự c s p x p l nh ng t ữ ằ ạ ượ ắ ố ư ế ữ i u hóa logic. M ch logic đ

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ượ ả . Di chuy n m t phát bi u t ộ Trang 14 c th c thi b ng mô hình c a ngôn ng verilog nh m c i ti n m ch th c thi. Trong trình biên d ch ngôn ng C, m t ộ ị ữ ạ ể ế ạ d ch chuy n i, i u hóa: code thì đ b t i u hóa t o ra mã máy t ị ố ư ộ ố ư i u hóa cũng có th th c thi theo th t , h n th n a gi m th i gian th c thi, t ể ự ả ờ ứ ự ơ ự ng b i c t o ra thì d dàng b nh h b i b t ở ị ả ưở ạ ở ộ ố ư ễ ượ ạ ế m t n i này đ n c miêu t cách m t mô hình đ ể ừ ộ ơ ể ộ ấ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

i có th có nh h ữ ễ ể ắ c t o ra, nó có th tăng ho c gi m s l ặ ượ ạ ể ả ả ặ ả ố ượ ng sâu s c lên ưở ổ ng nh ng c ng t ng ổ ữ m t n i khác ho c chia ra nh ng di n gi ộ ơ c ng logic đ ổ h p.ợ

a. Phân chia tài nguyên.

b. Di chuy n code. ể

c. Phân tích thành th a sừ ố chung.

Giao h n và k t h p. ế ợ ố

d. e.

T i u hóa Flip-flop và m ch ch t. ố ư ạ ố

f. Kích th c thi ướ t k . ế ế

g. ử ụ ấ ặ S d ng d u ngo c đ n.ơ

Ph n 3: Thi

t k UART:

ế ế

I. Gi ớ i thi u thi ệ t k : ế ế

t b cho ế ị thông tin, theo th t phép nh n và phát ậ ườ ồ

UART cho phép truy n thông tin gi a máy tính và m t ngòai thi t b ngo i vi UART (Universal Asynchronous Receiver and Transmitter) là m t thi và các đ ứ ự ữ ộ ng không đ ng b . ộ ế ị ề ộ ạ khác (máy in, modem....), k t n i b ng cáp theo c ng RS 232. ế ố ằ ổ

t c a UART: II. Đ t t chi ti ặ ả ế ủ

Phát theo ki u n i ti p. ể ố ế

c phát b i b UART theo ph ng pháp n i ti p ở ộ ươ ữ ệ ố ế , m t gói d li u ộ đ ượ

ắ ầ ữ ệ

ế

Trang 15

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

c phát thì đ ng phát và đ D li u đ ượ ữ ệ c phát 11 bit. Bit 0 đánh d u đi m b t đ u gói d li u. ấ ể 8 bit k cho d li u. ữ ệ M t bit k cho vi c ki m tra ch n l ệ ế Bit 1 đánh d u đi m cu i c a gói d li u. ể ấ Khi không có d li u đ ữ ệ . ẵ ẻ ữ ệ ườ ể ố ủ ượ ườ ự ng nh n ph i tích c c ả ậ m c 1. ở ứ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

ấ ấ

Bit đ Bit ki m tra ch n l ầ ẵ ẻ c set m c 1 ho c m c 0, tuy theo s 1 đ ứ ượ ẵ ượ ử ụ ể ả c phát đ u tiên là LSB (least significant bit), bit th p nh t. ố ứ ể không đ thì đ ặ ượ c s d ng có nghĩa là s 1 ph i là ch n, ki m tra l ẵ ố . N u bit ki m tra ch n l ượ ẳ ẻ ể ẽ ế ố c phát. c đ ẽ ượ ọ c ch n ượ ể N u ki m tra ch n đ ế s d ng có nghĩa là s 1 ph i là l ử ụ thì m t l i phát đ ả ệ ượ

ộ ỗ ố ộ c phát hi n. ố ị

T c đ phát thì c đ nh. UART có th đ c chia thành 2 kh i: kh i nh n và kh i phát. ể ượ ậ ố ố ố

Data reception:

• the 8 bits of information arrive in a serial way, at any moment, via the

rx signal. The starting point is given par a 0 value of rx

• the UART places the 8 bits in a parallel way over dataout, and

announces their availability setting rxrdy active

• the information reading is made active with the read signal

Phát d li u:

ữ ệ ự ự ế ế ệ o Ki m tra n u tín hi u txrdy tích c c, n u tích c c thì 8 bit d li u có c ghi trong khi phát.

ữ ệ ể th đ ể ượ ặ ữ ệ ự ệ

ố thì tín hi uệ o Đ t 8 bit d li u vào và tích c c tín hi u ghi. o UART g i 8 bit theo tín hi u tx. Trong su t quá trình phát ệ

txrdy ph i không ho t đ ng. ử ả

i và đ c set ự ế ả ở ạ ượ ở ứ m c ạ ộ o K t thúc quá trình phát, txrdy ph i tích c c tr l

i m i th i đi m, theo ố ế ạ ượ ề ể ọ ờ

ể ị

1. Nh n d li u: ậ ữ ệ o 8 bit c a thông tin đ n đ ế ủ ắ ầ c truy n song song lên dataout c truy n n i ti p t . Đi m b t đ u nh n có giá tr là 0. ậ ề tín hi u rxệ ặ ượ o UART đ t 8 bit đ

UART b ng Verilog (RTL code): ằ

III. Mô t ả

Trang 16

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

module uart (reset, txclk, ld_tx_data, tx_data, tx_enable, tx_out, tx_empty, rxclk, uld_rx_data, rx_data, rx_enable, rx_in, rx_empty); // Port declarations.

reset; txclk; ld_tx_data; tx_data; tx_enable; tx_out; tx_empty; rxclk; uld_rx_data;

input input input input [7:0] input output output input input output [7:0] rx_data; input input output rx_enable; rx_in; rx_empty;

// Internal Variables

reg [7:0] reg reg reg [3:0] reg reg [7:0] reg [7:0] reg [3:0] reg [3:0] reg reg reg reg reg reg tx_reg; tx_empty; tx_over_run; tx_cnt; tx_out; rx_reg; rx_data; rx_sample_cnt; rx_cnt; rx_frame_err; rx_over_run; rx_empty; rx_d1; rx_d2; rx_busy;

// UART RX Logic

Trang 17

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

always @ (posedge rxclk or posedge reset) if (reset) begin <= 0; rx_reg <= 0; rx_data rx_sample_cnt <= 0; <= 0; rx_cnt <= 0; rx_frame_err

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

<= 0; <= 1; <= 1; <= 1; <= 0;

rx_over_run rx_empty rx_d1 rx_d2 rx_busy end else begin

// Synchronize the asynch signal

rx_d1 rx_d2 <= rx_in; <= rx_d1;

// Uload the rx data

if (uld_rx_data) begin

rx_data rx_empty <= rx_reg; <= 1;

end

// Receive data only when rx is enabled

if (rx_enable) begin

// Check if just received start of frame

if (!rx_busy && !rx_d2) begin

rx_busy rx_sample_cnt rx_cnt <= 1; <= 1; <= 0;

end

// Start of frame detected, Proceed with rest of data

if (rx_busy) begin

rx_sample_cnt <= rx_sample_cnt + 1;

// Logic to sample at middle of data

if (rx_sample_cnt == 7) begin

if ((rx_d2 == 1) && (rx_cnt == 0)) begin rx_busy <= 0;

Trang 18

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

end else begin rx_cnt <= rx_cnt + 1;

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành // Start storing the rx data

if (rx_cnt > 0 && rx_cnt < 9) begin

rx_reg[rx_cnt - 1] <= rx_d2;

end if (rx_cnt == 9) begin

rx_busy <= 0;

// Check if End of frame received correctly

if (rx_d2 == 0) begin

rx_frame_err <= 1;

end else begin

rx_empty <= 0; rx_frame_err <= 0;

// Check if last rx data was not unloaded,

rx_over_run <= (rx_empty) ? 0 : 1;

end end end end end end

if (!rx_enable) begin

rx_busy <= 0;

end

end

// UART TX Logic

Trang 19

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

always @ (posedge txclk or posedge reset) if (reset) begin tx_reg <= 0; tx_empty <= 1; tx_over_run <= 0; tx_out <= 1; tx_cnt <= 0;

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

end else begin if (ld_tx_data) begin

if (!tx_empty) begin tx_over_run <= 0; end else begin tx_reg <= tx_data; tx_empty <= 0; end end if (tx_enable && !tx_empty) begin

tx_cnt <= tx_cnt + 1; if (tx_cnt == 0) begin tx_out <= 0;

end if (tx_cnt > 0 && tx_cnt < 9) begin

tx_out <= tx_reg[tx_cnt -1];

end if (tx_cnt == 9) begin

tx_out <= 1; tx_cnt <= 0; tx_empty <= 1;

end

end

if (!tx_enable) begin

tx_cnt <= 0;

end

end

Trang 20

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ

endmodule

ử ễ

Đ Án Đi n T Vi n Thông 2 GVHD: Bùi Minh ồ Thành

Trang 21

SVTH: Tr n T n Linh ầ Phan Đăng C ngườ