trong quá trình thiết kế .Mồ tả ở mức cao diễn tả hoạt động của psẩn cứng một cách tru tượng ,rong khi đó mô tả các mức thấp hơn sẽ thiên vẺ cồi tiết cấu trúc của mạch cũng .Với HDLš cá
Trang 1BO GIAO DUC VA DAO TAO TRUONG DAI HOC SU’ PHAM KY THUAT
THÀNH PHÓ HÒ CHÍ MINH
HGMUIIE
ĐỎ ÁN TÓT NGHIỆP NGÀNH LUẬN VĂN TÓT NGHIỆP
TIM HIEU PHAN MEM VERILOG HDL
VA THIET KE UNG DUNG
GVHD: TRAN THANH MAI SVTH: NGUYEN BA TRUYEN
HUYNH GIANG TU
117 SKLOO1117
TP Hồ Chí Minh, thang 07/2002
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO
TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT
Trang 3NHAN XET CUA GIAO VIEN
Trang 4LOI CAM ON
Dé tài về Verilog HDL là một để tài mới nên trong quá trình nghiên cứu làm
luận án tốt nghiệp , chúng em đã gặp nhiều khó khăn Nhờ có sự tận tình giúp đỡ của
ef Trin Thanh Mai , chúng em đã hoàn thành luận án tốt nghiệp
Chúng em xin chân thành cám gn cô Trân thanh Mai Thấy cô và bạn bè
trường Đại học Sư phạm KỆ thuật
Trang 5LOINOI DAU
“Trong thời đại thông tin liên lạc bùng nổ như hiện nay, yêu cầu về tốc độ xử lí thông tin và sự tiện dụng của các thiết bị đang đặt các nhà sản xuất thiết bị thông tỉn phải luôn luôn nghiên cứu để sản xuất ra những sản phẩm đáp ứng những yêu cầu ngày cầng cao này Vì vậy mạch tích hợp IC đã và đang thể hiện vị trí quan trọng của
mình
Bat đâu từ những năm 1960, kỹ thuật tích hợp đã có sự phát triển với tốc độ
cao , Tữ việc lích hợp vài Exanzitor trên một chíp đến việc tích hợp hàng triệu
'franziloi trên một chút đã đưa ngành công nghiệp sắn xuất IC trở thành ngành có lợi
nhuận tất can Mạch th hựp đã lầm biến đổi bộ mặt xã bối của con người một cách
nhanh chóng
Mặt tong những ngôn ngữ mạnh mô td phan cing biés nay 12 Verilog HDL Daly là ngân ngữ mà chú ng em đang nghiên cứu và winh bay tong lun 4n nay.Luan
án này gồm 2 phẩn :
Phin I: Gidi thigu Verilog HDL
Phân II: Thiết kế mạch ứng dung
Mac dù đã hoàn thành tốt đẹp với tất cả sự cố gắng nhưng vì kiến thức còn non
kém , kinh nghiệm còn hạn chế nên chắc hẳn luận án này sẽ còn thiếu sót Mong nhận
được nhiều ý kiến đóng góp của quí thầy cô và các bạn đọc
Xin cảm ơn!
Trang 6Muc luc
11 HDIs là gì?
122 Xu hưởng của HDLs
1.3 Sự phổ biên của Verilog HDI,
14 Dae diém ndi bat ela Verilog HDL
LA lu để thiết kế tiêu biểu
CHƯƠNG 2: Mô hình thiết kế có hệ thống
3.1 Các phương pháp thiết kế
3.332.131 Phương pháp thiết kế top-down
3.1.3 Phương pháp thiết kế botom-up
2.3.1 Danh sách khai báo port
2.3.2 Khai báo port
2.3.3 Quy tắc kết nối port
2.3.4 Kết nối port với tín hiệu ngoài
a/ Kết nối theo thứ tự b/ Kết nối theo tên
2.4 Cấu trúc thiết kế một chương trình Verilog
Trang 73.4 Các kiểu dữ liệu chuẩn của Verilog
3.4.1 Các giá trị logic của Verilog,
1.4.4 Các kiểu đữ liệu trữu tượng
JAA Riểu tieget
AAD Kieu real
3.4 Wam chuiin cia Verilog-va các chỉ thị biên dich
3:6.2.1 Toán tử logic not
3.6.2.2 Toán tử logic and
3.6.2.3 Toán tử loic or
3.6.3 Toán tử quan bệ
Trang 83.7.4.3 Toán tử case equality
3.7.4.4 Toán tử case unequality
3.7.5 Toán tử trên bịt (biwisc)
3.7.9 Toán tử điểu kiện
3.7.10 Độ ưu tiên của các toán hạng
3.8 Cac phép gan trong Verilog
Trang 94.1.1 Khối lệnh thực hiện tuần tự
4.1.2 Khối lệnh thực hiện song song
4.6 Vong lip repeat
47 Vong lap forever
6.4.1.5 Giá trị delay cạnh lên , cạnh xuống và turn-off —¬ 66
Trang 107.2.1 Các loại cổng _
§.1L1 Cấu wic UDP ———I
8.1.1.2 Các quy tắc ————I 8.1.2 UDP tổ hợp ————t2
8.3.2 Sự ảnh hưởng của tổng hợp logic ——Rs
CHƯƠNG 9: Giới thiệu các công cụ CAD -— - 94
Trang 119.1 Các trình mô phỏng Verilog ————5
9.3 Một số công cụ hổ tro — 96
PHẦN II : THIET KE MACH UNG DUNG
CHƯƠNG I: Giới thiệu trình mô phỏng MAX_PLUSII ~ 98
CHƯƠNG II : Thiết kế mạch ứng dụng ————14
p 13 Tl kể bộ đến kênh 4Í elt
Bài tập 3: Đền giáo thông ——!§ Hài lập 4: Máy tự động bán báo ——————2Il
Trang 12Luận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Trang 14Luận văn tốt nghiệp GVHD: Cô Trân Thanh Mai
1.1 HDLs 1a gi?
HDLs (Hardware Description Languages) 1A m6t ng6n ngữ lập trình dùng để
mô tả hệ thống số Ý tưởng đâu tiên về HDLs do hai kỹ sư C.Gordon Bell và Alan
Newell tai Carnegie Mellon University để cập đến trong cuốn sách Computer
Structures đã được họ công bố vào năm 1972 và đã thành công trong việc sử dụng thử
để mô tả hành vi của máy tinh PDP-8.Chinh nhờ các ý tưởng này đã cho ra đời các
ngôn ngữ phẩn cứng sau này như Verilog HDL ,VHDL ,ELLA
Nét nổi bật chủ yếu của HDLs thể hiện ở khả năng mô tả chức năng của mạch
độc lập với việc thi công mạch ,Có hai khía cạnh trong việc mô tả phần cứng mà cũng,
là tu điểm của HDL.s đề là:mô tá hành ví Irừu tượng và mô tả cấu trúc phần cứng
thực,
+ MA tả hành vi trầu tướng uoột ngôn ngữ mô tả phần cứng được dùng trước tiên
bởi nhữug thuận lợi trong việu tô tá ưừu tượng bánh ví phân cứng cho những mục đích
xác định Những khúi cạnh về thiết kế hay cấu trúc của phân cứag mong muốn không,
gây tế hại đến hãnh V( aây
+ Mỏ tả cầu uúc phân cứng :Ngôn ngữ mồ tả phân cứng ⁄¿ Khả náng mô tả cấu
trúy phẩn cứng bắt chấp hành vì của thiết kế
NHI š cho phép người thiết kế mô tả mạch ở nhiều mốc trửu tướng khác nhau
trong quá trình thiết kế Mồ tả ở mức cao diễn tả hoạt động của psẩn cứng một cách
tru tượng ,rong khi đó mô tả các mức thấp hơn sẽ thiên vẺ cồi tiết cấu trúc của mạch
cũng Với HDLš các nhà thiết kế mạch giờ đây trở thành các nh2 láp trình sản phẩm
tạo ra là các chip Tes
.12 Xu hướng của HDLs
Một xu hướng đang xuất hiện cho thiết kế hệ thông là kết hợp giữa phương pháp thiết kế top
~down với phương pháp botom - up, ở đó người thiết kế sử dụng module có sẵn trong Verilog ,hay khối cơ bản do nhà sắn xuất cung cấp đưa vào thiết kế và chạy mô phỏng một cách nhanh chóng,
điều này làm giảm giá thành và rút ngắn được thời gian thiết kế
'Vĩ du: Xem xét một hệ thống gồm e một CPU ,chíp đồ họa,chíp LO và hệ
thống bus Người thiết kế nên thiết kế hệ thống CPU mới ở mức RTL nhưng nên sử
dụng thiết kế ở mức hành vi cho chíp đồ họa và chíp I/O rồi mua thiết kế hệ thống bus
của người sản xuất Vì vậy ,quá trình mô phỏng ở mức hệ thống cho CPU có thể hoàn
thành và được thực thi rất nhanh ngay khi mô tả RTL cho chíp dé hoa va chip /O duge
hoàn thành
1.3 Sự phổ biến của Verilog HDL
'Verilog HDLđã và đang phát triển như là một ngôn ngữ chuẩn để mô tả phần cứng Nó cung cấp chung nhiều đặt điểm hữu íchtrong việc thiết kế phần cứng Verilog HDL có mục đích chung là
một ngôn ngữ thể hiện phân cứng để học và để sử dụng ,có cú pháp tương tự như ngôn ngữ lập trình
C ,người thiết kế có kinh nghiệm với ngôn ngữ C sẽ tìm thấy sự dé dang khi hoc Verilog
Verilog cho phép kết hợp nhiều mức trừu tượng khác nhau trong một thiết kế có thể định nghĩa một
mô hình phần cứng với mô tả ở mức swiches ,mức cổng ,mức RTL hay mức hành vi Với Verilog
Trang 15này làm cho nó trở thành ngôn ngu64 được nhiều người lựa chọn
Tất cả các nhà sản xuất đều cung cấp thư viện kỹ thuật (technology library) dé m6 phéng
sự tổng hợp logic sau cùng, Vì vậy thiết kế chíp trên verilog HDL cho phép chọn lựa nhiều nhà sản
xuất khác nhau Ngôn ngữ Verilog nổi bật có thể giao tiếp với ngôn ngữ lp trình PLI (programmable
language interface) ,trong đó người sử dụng viết trên C thông thường c khả năng với cấu trúc dữ liệu bên trong của Verilog Người thiết kế có khã năng tuy tin trình mô phỏng Verilog HDL cho phù hợp
để phục vụ cho mục đích riêng của mình với PLI,
1.4 Đặc điểm nổi bật của Verilog.,
Verilog là ngôn ngữ mô tá phần cứng kết hp cả hai khả năng , đó là mô tả cấu
trúc và mô tả hành vì ,Venilng có dạng cấu Uúc rất gn với ngôn ngữ C ,là ngôn ngữ
đc sử dụng rất nhổ biến bớt các kỹ su điện tử wong ki VHDI, lại có cấu túc rất gần
vái ngôn ñgữ Ada là ngài agit eat ít được biết đến
Mãi khía cạnh nếi bí nhất của Verilog đó là khá năng zử iý vừa song song vừa tuân tự Với phường pháp thực hiện song song nay cho php mô tả thực được các hoat đí¿ng của mạch số , đặc biệt đối vì mạch đài hỏi có tốc độ cao Verilog có nhiều đặt điểm mí thể hiện ngay trong cấu trúc
at
ngdn nyt bao gdm :
+ Có nhiều kiểu dữ liệu phong phú và một số kiểu dữ li£u đ4t biệt rất gần vơi ý
tưởng phần cứng cho thiết kế với mạch số như :kiỂu net ,reg ,Yec+ov ,zernory ,time
+ Cho phép khai báo biến kiểu bịt cũng như khả năng thao tác trén từng bít,
+ _ Có những phép toán đặt biệt cho phép thực hiện hiệu quả trong thiết kế mạch
số như (reduction ,concatenation ,replication) Ngoài ra, verilog còn có các kiểu toán
tử xử lí hiệu quả trên bit(toán tử bitwise)
+ _ Các lệnh điều khiển và vòng lặp rất phù hợp với phương pháp lập trình cấu
trúc, có đạng vòng lặp phù hợp cho mạch số như :tạo xung
+ Các phép toán cũngnhư các lệnh điểu khiển cho phép xử lí trên cả các giá trị
tùy định và giá trị tổng trở cao
+ Có các phát biểu dùng riêng cho delay nên có thể liệt kê chi tiết nhiều kiểu
điều khiển delay khác nhau ,giúp cho việc thiết kế trở nên chính xác hơn các hàm
chức năng của ngôn ngữ được sử dụng để kiểm tra định thời của mạch
1.5 Lưu đồ thiết kế tiêu biểu:
Lưu đồ trình bày ở phần trên là lưu đổ tiêu biểu cho các nhà thiết kế chip
dạng VLSL Từng quá trình lưu đỗ được mô tả như sau :
SVTH; Huỳnh Giang Tú ~ Nguyễn Bá Truyền Trang 14
Trang 16
Luận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Trang 17
kuận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
1 Design specification (đặc tính tiết kế)
Đây là bước đầu tiên trongbất kì quá trình thiết kế nào và cũng là mức thiết kế trừu
tượng cao nhất Ở bước này người thiết kế tập trung chủ yếu phân tích chức nang ,
khả năng giao tiếp , toàn bộ cấu trúc cơ bản mạch Kết quả , người thiết kế phải xác định được yếu tố như kích thích , tốc đọ các chức năng hệ thống
2 Behavioral Description (mô tả hành vi)
Dựa vào các yêu cầu đã xác định ở bước trên ta thiết kế lưu đồ giải thuật hình thành
các bước thiết kế chức năng, yêu cầu của mach Lưu đồ này cung cấp quá trình mô
phông nhanh nưa debug nhanh toàn bộ hệ thống,
3 RTL Description (mé ti RTL)
Dựa trên lưu để giải thuật, sử đụng ngôn guữ mổ tả phần cứng (Verilog / VHDL) để
mô tả hành vì chiức năng của mạch bước tuết kế này thường gọi là thiết kế logic Ở
bước này người thiết kê không cần phải nghỉ về cách mã máach này sẽ được thực hiện ở
mứt phẩn cứng nhự thể nào
4, Puntion verification and testing (chức năng thẩm định và thẩm tra)
Chak pay chương trình nguồn mô tả mạch viết bởi nị ó tả phần cứng
sẽ được đưa vào các tình mô phỏng logic (logic simulation) 6€ kiéen tra xem có đạt
ete yeu edu chức năng của mạch hay không Trình mô phỏng sé wish bảy kết quả mô
phảng dưới 3 hình thức :
+ KêLquá dưới dạng các giá trị trên màn hình
+ Kết quả dưới dạng tập tin chứa kết quả mô phỏng
+ Kết qua trình bày dưới dạng sóng
Nếu các ngõ ra không đạt đúng yêu câu ta phải sửa lại chương trình nguồn và
lặp lại bước này cho đến ki kết quả ngõ ra đạt yêu cầu Trinh mé phong logic tiêu
biểu có thể sử dụng là Verilog - XL của hãng Cadence Design Automation , VCScủa hãng Chronologie Simulation hoặc là silos II cia Simucad inc,
5 Logic Synthesis (téng hgp logic)
Ở bước này ta có thể sử dụng các công cụ tổng hợp logic để tao ra dang netlist
ở mức cổng ( mô tả mạch dưới dạng các cổng logic và các đường kết nối giữa các cổng logie).Công cụ tiêu b bước này có thể dùng phần mễm Leonardo
6 Logic verification and testing (thdm dinh va kiém tra logic)
Dạng netlist sẽ được kiểm tra thông qua dạng sóng ngõ ra của file netlist xem
các yêu cầu chức năng của mạch có đạt yêu cầu không Nếu giá trị logic có đạt yêu
cầu ta phải trở lại thiết kế mạch dùng ngôn ngnữ mô tả phần cứng để thiết kế lai
Công cụ tiêu biểu ở bước này có thể dùng phần mềm max + Plus II của Altera
Corporation
7 Physical Design (thiết kế vật If)
Bước này là một quá trình phức tạp thường dược chia thành những bước nhỏ
hơn Quá trình này sẽ tạo ra dạng Layout (sd đồ bố trí các linh kiện trong mạch)
Trang 18
Layout của mạch sẽ được kiểm tra các yêu cầ chức năng ,cũng như yêu câu về định
thời gian của mạch trước khi được đem đi chế tạo và đóng vỏ thành chip Nếu qúa trình kiểm tra phát hiện lỗi , ta có thể quay trở lại bước thiết kế physic hoặc trở lại bước
thiết kế logic
*** Trong toàn bộ lưu đồ thiết kế chip bước mô tả dùng Verilog là rất quan trọng
Hâu hết phương pháp thiết kế mạch số hiện nay chỉ tập trung việc thiết kế và tối ưu
mạch khởi mức RTL Các bước ssau đó đều được hổ trợ bởi các công cụ CAD có sẵn
VI vậy, quá trình thiết kế được rút ngấn đáng kể mà kết qủa đạt được lại cao
Với sự xuất hiên gần đây của các công cụ tổng hợp hành vi, Các công cụ này
có khẩ năng tạo ra mê tắ mạch dade RTL tí các mô phổng dưới đạng các lưu đồ giải
thuật của mạch „ Vì vậy, người thiết kế mạch có thết thiết mạch ở mức trừu tượng rất cao đó là mức giải thuật Đây là một khái niệm mới và rất mạnh của ngôn ngữ mô tả phân cứng
SVTH: Huỳnh Giang Tú ~ Nguyễn Bá Truyền Trang 17
Trang 20
Luận văn tối nghiệp GVHD: Cô Trần Thanh Mai
2.1 Các phương pháp thiết kế
Có 2 phương pháp cơ bản thiết kế mạch số Phương pháp thiết kế top_dơn và
phương pháp thiết kế bottom_up.Ý tưởng chính của 2 phương pháp thiết kế là chia bài
toán lớn thành những bài toán nhỏ cho đế khi có khả năng giải quyết những vấn để cơ
bản đó.Đây chính là ý tưởng của phương pháp lập trình cấu trúc
2.1.1 Phương pháp thiết kế top_down:
Trong, phương pháp này ta định nghĩa chương trình chính (ở mức độcaonhất)
Và xác định những chương trình con cắn thiết để tạo nên chương trình chính Các
chương trình con này lại được chia thành những phần nhỏ hơnđến khi ta giải quyết
được những phân nhỏ này cá phẩ nhỏ náy có thể xem như các phần tử cơ bản,
Leaf Leaf Leaf Leaf Leaf Leaf
2.1 2Phương pháp thiết kế bottom_up:
Ở phương pháp thiết kế này diễn ra ngược lại Dau tiên ta xác định những khối
cơ bản cân thiết và thiết kế chúng từ đó xây dựng những chương trình lớn hơn từ những
khối cơ bản Quá trình cứ thế tiếp tục cho đến khi ta thiết kế được chương trình chính
Mô hình thiết kế bottom-up:
SVTH: Huỳnh Giang Tú - Nguyễn Bá Truyền Trang 19
Trang 21Module là một cấu trúc cơ bản của ngôn ngữ Verilog Mọi thành phần trong
Verilog đều chứa trong module
Một module có khả năng giao tiếp với các module khácthông qua các port giao
tiếp của chúng Cấu trúc bên trong của một module nầy không thể truy xuất từ các
module khác Đây là một tính chất rất linh hoạt của Verilog giúp người thiết kế có thể
thay đổi cấu trúc bên trong của module mà không làm ảnh hưởng đến các thiết kế
khác
Định nghĩa một Module bắt đầu bằng từ khóa Module và phải kết thúc bằng từ
khóa endmodule Mỗi module phải có tên riêng đại diện cho module khai báo hoặc
không danh sách port giao tiếp
Trang 22
Luận văn tốt nghiệp GVHD: Cô Trần Thạnh Mai
e _ <port list> :liệt kê các port kiểu input, output, inout dùng để kết nối với các module
khác
e _ <declarations> :phần khai báo các biến hoặc các chương trình con
« <module items> : bao gồm các kiểu cấu trúc như initial, always, các phép gán hay
lời hiện thực module khác
Bên trong mỗi module có thể thiết kế ở bốn mức trừu tượng khác nhau bao gồm:
trong môi nualufe gồm: khai báo biến, các phát biểu mức đziz‡?z%, các quá trình hiện (hye module thap how, ede khối mức hành vi, hàm và thủ tục
3.3.2 Hiện thực module
Một module chỉ cũng cấp một dạng template (khuôn mẫu) r2 từ template ta có
thể tạo ra instance (một đối tượng cụ thể) bởi quá trình biện thực (instantiation)
module bién, hing s6 (parameter), và giao tiếp port
Quá trình tạo ra một instance từ module template gợi là hiện thực module Quá trình định nghĩa module chỉ đơn giản là thể hiện cách module làm việc,
các cấu trúc bên trong, các port giao tiếp bên trong, các port giao tiếp của module Module phải được thực hiện để dùng khi thiết kế
Trong Verilog các module không được lỗng vào nhau nhưng một module có thể
gọi một module khác trong nó bởi quá trình hiện thực module đó
Dạng tổng quát quá trình hiện thực module:
<module name> <parameter list> <instance name> (<port list>);
© <module name> : tén module template
© <parameter list> :danh séch cdc hing số truyền vao module instance
© <instance name> :tên riêng của module instance
© (< port list>) :danh sdch cdc gid trị xuất nhập cia module instance
Module chứa trong các module instance có thể xem như module chinh
và các module instance là các module con
Trang 23Tromp vi dy nay 66 4 module: system, comp-1, comp-2 va sub-3
Movtile ayvatent 1 atotute chinh đối với comp-l và œzag-2 Module comp-2 là
meiule chính đối với module sub-3, Có thể thấy qué wink module chinh hiện
(in cde nu álufe con,
4 Module system hién thy module comp-1 va comp-2
4 Mostule comp-2 hiện thực module sub-3
'Module chỉ có thể tương tác với môi trường bên ngoài thông qua các port Các
giá tri logic trong module được xuấu nhập qua các port Vi du, port chính là
đường xuất nhập của module
2.3.1 Danh sách Khai bdo port:
Trang 24
Luận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Danh sách port được khai báo khi định nghĩa module Nếu không cần giao tiếp với môi
trường ngoài thì không cần khai báo danh sách port
2.3.2 Khai báo port
Tất cả port trong danh sách port phải được khai bdo trong module, Mỗi port trong khai báo port có thể thuộc một trong ba dang sau:
2.3.3 Ony tie ket di port,
tình vẽ sạn hình bày quy tắc kết nối pm bên trong móodule tướng tác với tín
hiệu hên ngoài module
inout output reg or net net
et reg or net
2.3.4 Kết nối port với tín hiệu ngoài
Có hai cách nối giữa tín hiệu trong module chính và port trong module
instance
a Kết nối theo thứ tự
Kiểu kết nối này cho thấy sự tương tác 1-1 rất trực quan Cụ thể, tín hiệu trong
module chính hiện thực module con phẩi truyền vào module con theo đúng thứ tựcác
port của module con đã định nghĩa
SVIH: Hujnh Giang Tit — Nguyén Bá Truyền Trang 23
Trang 25
Luận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Hiện thực module instance với tên Fa_byname
bì hết nổi (heo tên,
Thự tự các tín hiệu của module chính hiện thực moduie c2
không cần đúng thứ tự mà phải phù hợp tên Đây là ưa #:
¡ mà kết nối theo vị trí rất dễ bị lỗi
khí truyền vào Verilog bởi vì
wire SUM ,C_OUT ;
// Hiện thc module instance vdi tén Fa_byname fulladder1bfa_byname (.c_out(C_OUT), sum(SUM),
.b(B), a(A), c_in (C_in) ) ;
SVTH: Huỳnh Giang Tú - Nguyễn Bá Truyền Trang 24
Trang 26
2.4 Cấu trúc thiết kế một chương trình Verilog
yiết kế mạch số dùng Verilog và trình mô phỏng MAX_PLUSIT bao giờ ta cũng thiết kế tic mach (Design block) va đưa vector giá trị ngõ vào để kiểm tra giá trị ngõ ra
Cấu trúc khối Design
module <name module> (<danh sách khai báo port>) ;
Khai báo hằng số>
Khai báo port>
<Khai bao bién>
nthye module Khae thay primitives
£ Thiết kế mạch mĩ REL
<lLỡI gọi chường trình con>
«Định nghĩa chướng trình con>
Trang 27| Ludin văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Trang 28
3.1 Từ khóa và danh hiệu
Từ khóa là danh hiệu đã được định nghĩa trong cấu trúc của verilog để
các nhà thiết kế sử dụng khi thiết kế chương trình
Danh hiệu là tên của đối tượng mà ta có thể truy xuất đối tương thông,
qua tên của chúng Danh hiệu cho phép dài tối đa 1024 kí tự
Chú ý:Verilog là ngôn ngữ nhạy vớ kí tự hoa và kí tự thường >Các từ khóa của
Verilog déu ở dạng chữ thường
Chữ thích được đưa vào chằm tăng khá năng dé đọc , đề húu hay để giải thích
ý nghĩa vài phúh - Có hai cách viết chú thích:
+ Cách L: Chú thích trên một hàng thì được bắt đấu jời củá thích với kí hiệu //
+ Cách 3:Chú thích trên nhiều hàng thì bất đầu lời chú thich vi ki hiệu /* và
kết thúc lồi chủ thích bău *⁄/,
Vislu:
// Day là chú thích trên một hàng, /* Đây là chú thích trên nhiều hàng */
3.3 Hằng số
Có hai kiéu viét hing s6 trong Verilog: sized va unsized
3.3.1 Hằng số kiểu sized
Khai báo hằng số kiểu sized khi ta quam trị của hằng số.Ta có thể
coi hằng số kiểu sized như hằng số có kiểu
< base format > : chỉ dạng mạ biểu điễn.số đó
< number > : chứa gia trị hằng số và phải phù hợp với < base format >
< base format > Hệ biểu diễn
Trang 294’b1111 // day 1a số nhị phân 4 bit
12°habc // đây là số hexa 12 bit
16*đ255 // đây là số thập phân 16 bit
Hằng số kiểu unsized
Khai báo hằng số dạng unsized thì không quan tâm đến tầm trị của hằng số Ta
có thể coi hằng số kiểu unsized như hằng số không kiểu
Dang biéu diễn:
‘[< base format >]< number >
Néu khéng c6 < base format th! 1 dinh dang là thập phân Do không khai
báo < size > nên số bít dối đá phụ thuộc văo trình mô phông và có giá trị bit tối thiểu là 32 bit
Vidu
“31416 / đây là số thập phân 32 bít
“hod đây là số hexa 32 bit
*ạ21// đây là số octan 32 bit Giá trị tày định và tổng trở cao
Vedilog có hai kí hiệu biểu diễn giá trị tùy định tổng trở cao Xbững giá trị rất
quan trọng trong thiết kế mạch số
+ Giá trị tùy định kí hiệu là x
+ Giá trị tống trở cao kí hiệu là z
Ví du:
12°h12x // đây là số hexa 12 bit ,4 bit thấp có giá trị tùy định
32'bz // đây là số nhị phân 32 bit, 32 bỉt có giá trị tổng trở cao
Số âm
Số âm trong Verilog được sử dụng dưới dạng sau:
4 < size >’< base format > < number >
Vi du :
8'd3 // đây là số âm 8 bit ,có giá trị -3
44-2 // số âm này có dạng biểu diễn không hợp lệ
3.3.5 Chuỗi kí tự
Là một loạt các kí tự nằm trong dấu ngoặc kép ( “ “ ).Chuỗi phải nằm trong
một hàng và không chứa kí tự enter Các kí tự trong chuỗi có thể là kí tự mã thoát
Bảng sau đây liệt kê các kí tự mã thoát:
Trang 303.4 Các kiểu dữ liệu chuẩn trong verilog
3.4.1 Các giá trị logic của Verilog :
Verilog sử dụng nhiều giá trị kogic trong thiết kế mạch để giải quyết sự tranh
chấp hay xung đột khi có nhiều điệu kiện cũng tác động lên net
@ 0: đại diện cho giá tị logic 0 hoặc điêu kiến sai
` 1: đại điện cho giá trị logic } hoặc điêu kiện đúng
* x- đại điện cho giá trị logic tùy định
` ø- đại diện cho trạng thái tổng trở cao 3.4.1 Các kiểu dử liệu vật lý
Veulog HDL là ngôn ngữ chuyên thiết kế phần cứng nên 26 có những kiểu dữ liệu mô tá các phần tử thực rất mạnh mà các ngôn ngữ lập trìni: khác không có
Đây là khai báo biến dùng để lưu trữ giá trị dạng unsized Biến kiểu rreg được
khai báo dùng từ khóa reg.giá trị mặc định của reg là x và độ rộng mặc định là
Biến kiểu net và reg có thể khai báo dưới dạng vector (độ rộng nhiều biÐ Biến
kiểu vector có thể khai báo dạng sau: [MSB : LSB] Bit có trọng, số cao nhất
luôn nằm bên trái ngoặc vuông
SVTH: Huỳnh Giang Tú ~ Nguyễn Bá Truyền
Trang 31Luận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Cú pháp:
< kiểu dữ liệu > < [MSB] > <tên biến> ;
Ví dụ:
wire [7:0] a ;// khai báo biến a kiểu net với độ rộng 8 bit
_ ree (19:0] ; // khai báo biến a kiểu reg với độ rộng 20 bit
3.4.2.4Kiéu mang
Mang là một biến cấu trúc trong đó có nhiều phân tử cùng kiểu ,mỗi phần tử là
một biến của mảng Mỗi biến thành phân này là một biến bình thường và chỉ để
phân biệt giữa phần tử này với phân tử kia, Như vậy để truy xuất một phần tử của mảng ta cần biết được chí số của nó Verilog chỉ cho phép biến mắng có kiểu là
teg integer lim và veetor Verilog chỉ cho phép định nghĩa mảng một chiểu ,số phần
êu gọi là kích thước của chiêu đó,
;(hai báo kiểu mảng có 8 phần tư ,mỗi phần tử có độ rộng Í Đít
/#ưuy xuất phần tử thứ năm của mang count :
count[5]
3.43 Các kiểu dữ liệu trừu tượng
Giống như các ngôn nhữ lập trình Verilog cung cấp thêm một số kiểu đữ liệu
không phù hợp với phân chừng thực sự mà nó sử dụng sẽ thuận lợi hơn trong
Khai báo biến dạng số thực Giá trị mặc định là zero Không xác định độ rộng
Khai báo biến kiểu real dùng từ khóa real
Cũ pháp :
real< tên biến > ;
real d;// Khai báo biến đ kiểu real
3.5 Hàm chuẩn của verilog và chỉ thị biên dịch :
SVTH: Huỳnh Giang Tú - Nguyễn Bá Truyền Trang 30
Trang 32
Luận văn tốt nghiệp
3.5.1 Hàm chuẩn:
'Verilog cung cấp một số hàm chuẩn để thực hiện chức năng xác định
Các chức năng như trình bày kết quả ra màn hình, dừng hay kết thúc quá trình mô
phỏng Tất cả các hàm chuẩn đều có dạng như nhau :
$ <keyword>
Có một số định dạng chuẩn để trình bày dạng hiển thị của biến thường dùng
kèm với các hàm chuẩn hiện thị
Ham display ding hién thi gid tri của biến, chuỗi hoặc biểu thức Hám này
tường tự như hàm printf trong ngôn ngữ C
$ display (“Hello Verilog World” ) ;
1 Kết quả hién thi trén man hinh : Hello Verilog World
Trang 33Verilog cho phép định nghĩa hằng số trong module dùng từ khóa parameter Khi viết
chương trình với Verilog nền sử dụng phát biểu parameter thay cho dùng giá trị hằng
Điểu nốt hải của khai bảo hằng trong Verilog đó là có thể thay đổi giá trị hằng số
trong quá Hình hiện thực module có khai báo hằng số bồi việc đúng phát biểu
defparam Điểu dày cho phép ta có thể dễ dàng thay đổi hành vi của module khi hiện
// Thay đổi giá trị của ¡d_num đã định nghĩa dùng phát biểu defparam
defparam w2.id_num = 1, w3.id_num = 2
// Hiện thực module hello_word tạo 3 instance
hello_word w1() ;// Kết quả :id_num = 0
hello_word w2 ( ) ;// Kết quả :id_num = 1
hello_word w3( ) ; / Kết quả :id_num =2
Trang 34Luận văn tốt nghiệp GVHD: Cô Trần Thanh Mai
Toán hạng bao gồm bất kì các kiểu dữ liệu đã trình bày Toán hạng có thể là hằng số
integer, real, net, re, tìme, vector, hoặc lời gọi hàm
Ví dụ:
integer count, final_count ;
final_count = count + 1 ; // count 1a todn ti hang integer
Các toan tứ của Verilog
Verilog cung cấp rất nhiều kiểu toán tử bao gồm : tzás tử số học, toán tử
logic toan tử quan hệ, toán tử so sánh, toán tử trên bịL, toán tử rứt gọn qoán tử dịch,
toán tứ kết hợp ,toán tử lặp.và toán tử điều kiện
3.7.1 Toán tử số học
Có 2 dạng toán tử số học binary và unary
3.7.1.1 Toán tử số học dang binary
Toán tử số học dạng binary thao tác giữa hai toán hạng bao gém :
+ _ Toán hạng cộng (+) :thực hiện phép toán cộng giữa hai toán hạng
+ _ Toán hạng cộng (-) :thực hiện phép toán trừ giữa hai toán hạng
+ _ Toán hạng cộng (*) :thực hiện phép toán nhân giữa hai toán hạng
+ Toán hạng cộng (/) :thực hiện phép toán chia giữa hai toán hạng
+ Toán tử module (%) :thực hiện phép toán lấy dư của số chia nguyên giữa hai
Trang 35Luận văn tốt nghiệp + GVHD: Cô Trần Thanh Mai
sum = in] + in2 ; // sum = 4’xxxx
+5 // là toán tử hạng unary biểu diễn số dương 5
+5 // là toán tử hạng unary biếu diễn số dương 5
372 Toán tửlogie
Verilog có các toán tử loyie and (4), ør ([{), not (!).Các toán tử logic and (&&)và or ((() lầm việc trên hai toán hạng, toần tử not (!)thực hiện trên một toán hạng Toán tử logic chí trả về các giá uy logic
Hãng sự thật sau đầy trình bày sự hoạt động của các toán tử logic;
Thực hiện lấy giá trị bù từng bit từ 0 thành 1 và từ khác 0 về thành 0
Chi tra vé gid tri logic 0,1,x
3.7.2.2 Toán tử logic and
Đặc trưng bởi dấu “&&”
Thực hiện phép toán and giữa hai toán hạng
Trang 36Đặc trưng bởi dấu “( (”
Thực hiện phép toán or giữa hai toán hạng
A741 — Toán tứ quan hệ
Verilog cung cap kiểu toán tử quan để chiméi quan hé zi24 hai toán hàng lớn hứa, nhỏ hơn „ lửa hơn hoặc bằng, nhỏ hơn hoặc bằng thức điêu kiện là
dung trả về giá trị logic là 1 Nếu biểu thức điều kiện là sai tá về Z⁄4 trị logic là 0
3 TẠI Toan tứ nhỏ hơn
Đặc trưng bằng dấu *<”
“Thực hiện phép so sánh nhỏ hơn giữa hai toán hạng
Kết quả trả về mức logic 1 nếu biểu thức đúng
Kết quả trả về mức logic 0 nếu biểu thức sai
"Thực hiện phép so sánh nhỏ hơn giữa hai toán hạng
Kết quả trả về mức logic 1 nếu biểu thức đúng
Kết quả trả về mức logic 0 nếu biểu thức sai
Trang 37
Đặc trưng bing dau “>”,
Thực hiện phép so sánh lớn hơn giữa hai toán hang
Kết quả trả về mức logic 1 nếu biểu thức đúng
Kết quả trả về mức logic 0 nếu biểu thức sai
37444 Toán tử lên hơn hoặc hằng
Đặc trưng bằng đấu “xe”,
“Thực hiện phép xo xánh lớn hơn giữa hai toán hang
Kết quả trả về tp loạic L nếu biểu thức đúng
kết quả trả về mức logic Ô nếu biểu thức sai
Verilog cung cấp một số toán tử so sánh bao gồm : toán tử so sánh (= =) ,toán
tử so sánh không bằng (! =) ,todn tit case equality (= = =) va toán tử case unequality
Đặc trưng bởi dấu “= =” , thực hiện so sánh bằng giữa hai toán hạng
Kết quả trả về mức logic 1 nếu biểu thức đúng
Kết quả trả về mức logic 0 nếu biểu thức sai
Kết quả trả về là x nếu một trong hai toán hạng có chifa bit x,z
37.42 Toán tửso sánh không bằng
Đặc trưng bởi dấu “! =” , thực hiện so sánh không, bằng giữa hai toán hạng
Kết quả trả về mức logic 1 nếu biểu thức đúng
Trang 38
Kết quả trả về mức logic 0 nếu biểu thức sai
Kết quả trả về là x nếu một trong hai toán hạng có chứa bit x,z
3.7.4.3 Toán tử case qualit (toản tử xơ vánh bằng trong mọi trường hợp)
Đây là toán tử đặc biệt của Verilog cúng cấp thực hiện việc so sánh bằng trên trị x¿ rất phù hợp trong đuết kế niạch số Đặc trưng bởi dấu “= = =”,thực hiện
việc so sánh từng bịt pitta has toda hang: kể cá bịt có giá trị xe
Kết quả trả về tài losic | nếu biểu thức đúng
kết quả Hà về nút logic 0 nếu biểu thức sái
3.7.4.4 Toán tử case unqualit (toán tử so sánh không bằng trong mọi trường hợp)
“Toán tử này thực hiện việc so sánh không bằng từng bít giữa hai toán hang kể
cả giá trị x,z Đặc trưng bởi dấu “! = =”
Kết quả trả về mức logic 1 nếu biểu thức đúng
Kết quả trả về mức logic 0 nếu biểu thức sai
3.57 Toán tử trên bit (bitwise)
'Verilog cung cấp toán tử trên bit bao gồm:
+ not(~): thực hiện việc đảo bít từ bit 0 trở thành bit 1 và ngược lại
+ and (&): thực hiện phép and 2 bit
+ or({():thực hiện phép or 2bit
+ xor (^):thực hiện phép XOF bịt
+ xnor (^~ hoặc ~^):thực hiện phép xnor bit
SVTH: Huỳnh Giang Tú ~ Nguyễn Bá Truyền Trang 37
Trang 39
Các toán tử trên bit thực hiện trên từng cặp bit tương ứng giữa 2 toán hạng
ngoại trừ toán tử not chỉ thực hiện trên một toán hạng Các toán tử trên bit thực
hiện trên các bit x và bit z được xử lí giống như bit x
Trang 40
Acad Wil, B= a bLLOl;
ASH kot qua =4°bOLLL
SASS Tost tid enor
Đặc trưng bằng dấu “^~ hoặc ~^”, thyc hign trén 2 tod:
gia tị biểu thức,
Bảng sự thật:
bang „ kết quả trả về là
Toán tử này là một trong những đặc điểm mạnh của verilog, nó cung cấp một khả
năng làm việc trên bitcủa một toán hạng dạng vectơ phù hợp cho các công dụng thiết
kế mạch số Verilog cung cấp các toán tử bao gồm:
+ Toán tử and (&)
'Toán tử nand (~&)
SVTH: Huỳnh Giang Tú ~ Nguyễn Bá Truyền Trang 39