tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog tổng quan về hệ điều hành và thiết kế sequential logic using UDP dùng verilog
Trang 2Mục Lục:
P ẦN 1: 6
TỔN QU N VỀ DL 6
1.1 Mở đầu 6
1.2 Khái niệm 6
1.3 Những ưu điểm củ phương pháp thiết kế hệ thống số bằng ngôn ngữ mô tả phần cứng HDL……… … 7
1.4 Gi i thiệu ngôn ngữ mô tả phần cứng VHDL 8.9 1.5 Code củ HDL trong Verilog……….10,11 P ẦN 2 12
TÌM ỂU VỀ VER LO 12
I Tổng qu n về verilog 12
II CHỨC NĂNG CÁC TỪ VỰNG TRONG VERILOG 12
1 Khoảng trắng 13
2 Chú giải 13
3 Chữ số: 13
4 Từ định d nh: 13
5 Cú pháp: 13
6 Toán tử: 13
7 Từ kh Verilog: 13
III.CÁC CỔNG CƠ BẢN TRONG VERILOG 14
1 Các cổng cơ bản: 14
1.1 Cú pháp: 14
1.2 Ví dụ: 14
2 Cổng buf, not: 14
2.1 Cú pháp: 14
Trang 3IV CÁC DẠNG DỮ LIỆU 15
I Đặt giá trị: 15
II Wire: 16
III Reg: 16
IV Input, Output, Inout: 16
I Integer (Số nguy n): 17
II Supply 0, Supply1: 17
III Time: 18
IV P r meter (Th m số): 18
V TOÁN TỬ 19
I Toán tử số học: 19
II Toán tử qu n hệ: 19
III Toán tử bit_wire: 19
IV Toán tử logic: 20
V Toán tử biến đổi: 20
VI Toán tử ghép: 20
VII Toán tử dịch: 20
VIII Toán tử điều kiện: 20
IX Thứ tự toán tử: 20
VI.TOÁN HẠNG 21
I Liter ls (dạng kí tự): 21
II Chọn 1 phần tử bit và chọn 1 phần các bit 21
III Gọi hàm chức năng: 22
IV Wire, reg, và th m số: 22
VII MODULES 23
I Khai báo modules: 23
II Chỉ định li n tiếp: 23
III Module instantiations: 24
VIII KHUÔN MẪU HÀNH VI (BEHAVIORAL) 25
I Những chỉ định theo thủ tục: 25
II Delay trong chỉ định: 26
Trang 4III Chỉ định khối: 26
IV Begin …end: 26
V Vòng lặp for: 27
VI Vòng lặp while: 27
VII Khối lệnh if… else if… else: 27
VIII Case: 27
IX KHỐI ALWAYS VÀ KHỐI INITIAL 28
I Khối lw ys: 28
II Khối initi l 29
X HÀM 30
I Khai báo hàm: 30
XI CHỨC NĂNG LINH KIỆN 30
I Th nh ghi Edge_triggered, flip_flop, bộ đếm: 31
II Bộ đ cộng: 32
III Bộ cộng, trừ: 32
IV Bộ đệm 3 trạng thái: 32
V Các linh kiện khác: 32
P ẦN 3 MỘT SỐ VÍ DỤ………… 33
I Cấu trúc một chương trình dùng ngôn ngữ Verilog: 33
1 Ví dụ 1: 33
Chương trình tính NOR các bit củ biến vào 33
b Mô phỏng 33
2 Ví dụ 2: 34
Chương trình cộng h i biến bốn bit 34
b Mô phỏng 34
3 Ví dụ 3: 35
Chương trình giải mã 2 s ng 4 35
b.mô phỏng……… 36
.4.vi dụ 4……… 37
a.ộ dồn k nh 4 s ng 2……… 37
Trang 6gi i thiệu một loại ngôn ngữ mô phỏng phần cứng đ là VHDL (Very high speed intergr ted circuit H rdw re Description L ngu ge), loại ngôn ngữ chủ yếu đƣợc sử dụng để mô phỏng phần cứng trong công nghệ CPLD, FPGA, ASIC…
1.2 hái niệm
- Là ngôn ngữ thuộc l p ngôn ngữ máy tính(computer language
- Dùng miêu tả cấu trúc và hoạt động một vi mạch
- Dùng mô phỏng, kiểm tra hoạt động vi mạch
- Biểu diễn hành vi theo thời gian va cấu trúc khônggian của mạch
Trang 7- Bao gồm những ký hiệu biểu diễn thời gian và sự1đồng thời (time and concurrence)
1.3 Những ưu điểm của phương pháp thiết kế hệ thống số
ằng ngôn ngữ mô phỏng phần cứng ( DL)
Ngày n y, các mạch tích hợp ngày càng thực hiện được nhiều chức năng do đ mà vấn đề thiết kế mạch càng trở n n phức tạp Những phương pháp truyền thống như dùng phương pháp tối thiểu hoá hàm Boolean h y dùng sơ đồ các phần tử không còn đáp ứng được các y u cầu đặt r khi thiết kế Nhược điểm l n nhất củ các phương pháp này
là chúng chỉ mô tả được hệ thống dư i dạng mạng nối các phần tử v i
nh u Người thiết kế cần phải đi qu h i bư c thực hiện hoàn toàn thủ công: đ là chuyển từ các y u cầu về chức năng củ hệ thống s ng biểu diễn theo dạng hàm Boole n, s u các bư c tối thiểu hoá hàm này t lại phải chuyển từ hàm Boole n s ng sơ đồ mạch củ hệ thống Cũng
tương tự khi phân tích một hệ thống người phân tích cần phải phân tích
sơ đồ mạch củ hệ thống, rồi chuyển n thành các hàm Boole n, s u đ
m i lập lại các chức năng, hoạt động củ hệ thống Tất cả các bư c n i
tr n hoàn toàn phải thực hiện thủ công không c bất kỳ sự trợ giúp nào
củ máy tính Người thiết kế chỉ c thể sử dụng máy tính làm công cụ
hỗ trợ trong việc vẽ sơ đồ mạch củ hệ thống và chuyển từ sơ đồ mạch
s ng công cụ tổng hợp mạch vật lý dùng công cụ Synthesis Một nhược điểm khác nữ củ phương pháp thiết kế truyền thống là sự gi i hạn về
Trang 8thái( finite-state-m chine) cho các hệ thống tuần tự cũng như cho phép
sử dụng bảng chân lý cho hệ thống tổng hợp Việc chuyển đổi từ các biểu đồ trạng thái và bảng chân lý s ng mã ngôn ngữ mô phỏng phần cứng được thực hiện hoàn toàn tự động
Nhờ tính dễ kiểm tr thử nghiệm hệ thống trong suốt quá trình thiết
kế mà người thiết kế c thể dễ dàng phát hiện các lỗi thiết kế ng y từ những gi i đoạn đầu, gi i đoạn chư đư vào sản xuất thử, do đ tiết kiệm được lượng chi phí đáng kể bởi từ ý thiết kế đến tạo r sản phẩm đúng như mong muốn là một việc rất kh tránh khỏi những kh khăn, thất bại
Khi mọi lĩnh vực củ kho học đều phát triển không ngừng thì sự phức tạp củ hệ thống điện tử cũng ngày một tăng theo và gần như không thể tiến hành thiết kế thủ công mà không c sự trợ giúp cuả các loại máy tính hiện đại Ngày n y, ngôn ngữ mô tả phần cứng HDL được dùng nhiều để thiết kế cho các thiết bị logic lập trình được PLD
từ loại đơn giản đến các loại phức tạp như m trận cổng lập trình được FPGA
1.4 iới thiệu ngôn ngữ mô tả phần cứng V DL
VHDL là ngôn ngữ mô tả phần cứng cho các mạch tích hợp tốc độ rất c o, là một loại ngôn ngữ mô tả phần cứng được phát triển dùng cho trương trình VHSIC( Very High Speed Itergr ted Circuit) củ bộ quốc phòng Mỹ Mục ti u củ việc phát triển VHDL là c được một ngôn ngữ mô phỏng phần cứng ti u chuẩn và thống nhất cho phép thử
nghiệm các hệ thống số nh nh hơn cũng như cho phép dễ dàng đư các
hệ thống đ vào ứng dụng trong thực tế Ngôn ngữ VHDL được b công ty Intermetics, IBM và Tex s Instruments bắt đầu nghi n cứu phát triển vào tháng 7 năm 1983 Phi n bản đầu ti n được công bố vào tháng 8-1985 S u đ VHDL được đề xuất để tổ chức IEEE xem xét thành một ti u chuẩn chung Năm 1987 đã đư r ti u chuẩn về VHDL( ti u chuẩn IEEE-1076-1987)
VHDL được phát triển để giải quyết các kh khăn trong việc phát triển, th y đổi và lập tài liệu cho các hệ thống số Như t đã biết, một
hệ thống số c rất nhiều tài liệu mô tả Để c thể vận hành bảo trì sử chữ một hệ thống t cần tìm hiểu kỹ lưỡng tài liệu đ V i một ngôn ngữ mô phỏng phần cứng tốt việc xem xét các tài liệu mô tả trở n n dễ
Trang 9dàng hơn vì bộ tài liệu đ c thể được thực thi để mô phỏng hoạt động
củ hệ thống Như thế t c thể xem xét toàn bộ các phần tử củ hệ thống hoạt động trong một mô hình thống nhất
VHDL được phát triển như một ngôn ngữ độc lập không gắn v i bất kỳ một phương pháp thiết kế, một bộ mô tả h y công nghệ phần cứng nào Người thiết kế c thể tự do lự chọn công nghệ, phương pháp thiết kế trong khi chỉ sử dụng một ngôn ngữ duy nhất Và khi đem
so sánh v i các ngôn ngữ mô phỏng phần cứng khác đã kể r ở tr n t thấy VHDL c một số ưu điểm hơn hẳn các ngôn ngữ khác:
- Thứ nhất là tính công cộng: VHDL được phát triển dư i sự bảo trợ củ chính phủ Mỹ và hiện n y là một ti u chuẩn củ IEEE VHDL được sự hỗ trợ củ nhiều nhà sản xuất thiết bị cũng như nhiều nhà cung cấp công cụ thiết kế mô phỏng hệ thống
- Thứ h i là khả năng hỗ trợ nhiều công nghệ và phương pháp thiết
kế VHDL cho phép thiết kế bằng nhiều phương pháp ví dụ phương pháp thiết kế từ tr n xuống, h y từ dư i l n dự vào các thư viện sẵn
c VHDL cũng hỗ trợ cho nhiều loại công cụ xây dựng mạch như sử dụng công nghệ đồng bộ h y không đồng bộ, sử dụng m trận lập trình được h y sử dụng mảng ngẫu nhi n
- Thứ b là tính độc lập v i công nghệ: VHDL hoàn toàn độc lập
v i công nghệ chế tạo phần cứng Một mô tả hệ thống dùng VHDL thiết kế ở mức cổng c thể được chuyển thành các bản tổng hợp mạch khác nh u tuỳ thuộc công nghệ chế tạo phần cứng m i r đời n c thể được áp dụng ng y cho các hệ thống đã thiết kế
- Thứ tư là khả năng mô tả mở rộng: VHDL cho phép mô tả hoạt động củ phần cứng từ mức hệ thống số cho đến mức cổng VHDL c khả năng mô tả hoạt động củ hệ thống tr n nhiều mức nhưng chỉ sử dụng một cú pháp chặt chẽ thống nhất cho mọi mức Như thế t c thể
mô phỏng một bản thiết kế b o gồm cả các hệ con được mô tả chi tiết
- Thứ năm là khả năng tr o đổi kết quả: Vì VHDL là một ti u
chuẩn được chấp nhận, n n một mô hình VHDL c thể chạy tr n mọi
bộ mô tả đáp ứng được ti u chuẩn VHDL Các kết quả mô tả hệ thống
c thể được tr o đổi giữ các nhà thiết kế sử dụng công cụ thiết kế khác
nh u nhưng cùng tuân theo ti u chuẩn VHDL Cũng như một nh m thiết kế c thể tr o đổi mô tả mức c o củ các hệ thống con trong một
hệ thống l n (trong đ các hệ con đ được thiết kế độc lập)
Trang 10- Thứ sáu là khả năng hỗ trợ thiết kế mức l n và khả năng sử dụng lại các thiết kế: VHDL đƣợc phát triển nhƣ một ngôn ngữ lập trình bậc
* multiplied in an 8-bit multiplier, with the result added to a 10-bit
* accumulator The number of pipe stages is set by the 'stages' parameter,
Trang 11reg [9:0] sum[stages-1:0];
integer i;
always @(posedge CLK) begin
for(i=stages-1; i>0; i = i-1)
Trang 12P ẦN 2
TÌM ỂU VỀ VER LO
I TỔN QU N VỀ VER LO
Verilog HDL là một trong h i ngôn ngữ mô phỏng phần cứng
thông dụng nhất, được dùng trong thiết kế IC, ngôn ngữ ki là
Verilog thường được dùng để mô tả thiết kế ở ốn dạng
Thuật toán (một số lệnh giống ngôn ngữ C như: if, c se,
for,while…)
Chuyển đổi th nh ghi (kết nối bằng các biểu thức Boole n)
Các cổng kết nối( cổng: OR, AND, NOT…)
Chuyển mạch (BJT, MOSFET) Ngôn ngữ này cũng chỉ rõ cách thức kết nối, điều khiển vào/r trong mô phỏng
ấu trúc chương trình dùng ngôn ngữ Verilog
// Khai báo module
Module t n chương trình (t n biến I/O); // t n chương trình trùng
tên file.v
Input [msb:lsb] biến;
Output [msb:lsb] biến;
Reg [msb:lsb] biến reg;
Wire [msb: lsb] biến wire;
// Kh i báo khối lw ys, hoặc khối initi l
… các lệnh …
Endmodule
Trang 13II Ứ NĂN Á TỪ VỰN TRON VER LO
Những tập tin văn bản nguồn Verilog b o gồm những biểu hiện thuộc tính từ vựng s u đây:
1 Khoảng trắng
Khoảng trắng ngăn những từ và c thể chứ khoảng cách, khoảng dài, dòng m ivà dạng đường dẫn Do đ , một lệnh c thể đư r nhiều dòng phức tạp hơn mà không c những đặc tính đặc biệt
Toán tử là một, h i, hoặc b kí tự dùng để thực hiện các toán hạng
tr n biến Các toán tử b o gồm >, +, &, !=
Trang 147 Từ khóaVerilog:
C những từ mà phải c ý nghĩ đặc biệt trong Verilog Ví dụ:
assign, case, while, wire, reg, and, or, nand, và module Chúng
không được dùng như từ định d nh Từ kh Verilog cũng b o gồm cả chỉ dẫn chương trình bi n dịch và System T sk (hệ thống
strong1 và strong0
Delay: nếu del y không được chỉ rõ, thì khi đ cổng không c trì
hoãn truyền tải; nếu c h i del y được chỉ định, thì trư c ti n là
mi u tả trì hoãn l n, thứ h i là trì hoãn xuống Nếu chỉ c một
del y được chỉ định, thì khi đ trì hoãn l n xuống là như nh u Del y được bỏ qu trong tổng hợp Phương pháp củ sự trì hoãn chỉ định này là một trường hợp đặc biệt củ “P r meterized
Modules” Các th m số cho các cổng cơ sở phải được định nghĩ trư c như del y
1 Các cổng cơ bản:
Các cổng cơ bản c một ngõ r , và c một hoặc nhiều ngõ vào Trong các cổng, cú pháp cụ thể biểu diễn b n dư i, các từ khoá củ các cổng: nd, or, n nd, nor
1.1 Cú pháp:
GATE (drive_strength)#(delays)
T n từ kh cổng _t n (output, input_1, input_2, …, input_N);
Delay: #( l n, xuống) hoặc #l n_vàxuống hoặc #( l n_vàxuống)
Trang 15Các cổng này thực thi đệm và đảo theo theo thứ tự địmh sẳn
Chúng c một ngõ vào, h i h y nhiều ngõ r Cú pháp cụ thể biểu diễn ở b n dư i, từ khoá buf, not
2.1 Cú pháp:
T n từ kh cổng _t n (output_1, output_2, …, output_N, input);
2.2 Ví dụ:
Not #(5) not_1( ,c); // s u 5 đơn vị thời gi n thì = đảo c
Buf c1 (o, p, q, r, in); // bộ đệm 5 ngõ r và 2 ngõ r
0: mức logic 0, hoặc điều kiện s i
1: mức logic 1, hoặc điều kiện đúng
X: mức logic tuỳ định
Z: trạng thái tổng trở c o
X và Z dùng c gi i hạn trong tổng hợp (synthesis)
II Wire:
Mô tả vật liệu đường dây dẫn trong một mạch điện và được dùng
để kết nối các cổng h y các module Giá trị củ Wire c thể đọc, nhưng không được gán trong hàm (function) hoặc khối (block)
Trang 16Wire không lưu trữ giá trị củ n nhưng vẫn phải được thực thi bởi
1 lệnh gán kế tiếp h y bởi sự kết nối Wire v i ngõ r củ 1 cổng hoặc 1 module Những dạng đặc biệt khác củ Wire:
W nd(wired_ nd): giá trị phụ thuộc vào mức logic And toàn bộ bộ điều khiển kết nối đến Wire
Wor (wired_or): giá trị phụ thuộc vào mức logic Or toàn bộ bộ điều khiển kết nối đến Wire
Tri(three_st te): tất cả bộ điều khiển kết nối đến 1 tri phải ở trạng thái tổng trở c o
1 Cú pháp:
Wire [msb:lsb] tên biến wire
Wand [msb:lsb] t n biến w nd
Wor [msb:lsb] t n biến wor
Tri [msb:lsb] t n biến tri
2 Ví dụ:
Wire c;
Wand d;
Assign d= a;
Assign d= b;// giá trị d là mức logic củ phép And và b
Wire [9:0] A; // vectơ A c 10 wire
III Reg:
Reg (register) là một đối tượng dữ liệu mà n chứ giá trị từ một thủ tục gán kế tiếp Chúng chỉ được dùng trong hàm và khối thủ tục Reg là một loại biến Verilog và không nhất thiết là th nh ghi
tự nhi n Trong th nh ghi nhiều bit, d t được lưu trữ bằng những chữ số không dấu và không c kí hiệu đuôi mở rộng, được thực hiện mà người sử dụng c chủ y là số bù h i
1 Cú pháp:
Reg [msb:lsb] t n biến reg
2 Ví dụ:
Reg ; // biến th nh ghi đơn giản 1 bit
Reg [7:0] A; // một vectơ 8 bit; một b nk củ 8 th nh ghi
Reg [5:0]b, c; // h i biến th nh ghi 6 bit
Trang 17IV Input, Output, Inout:
Những từ khoá này biểu thị ngõ vào, ngõ r , và port h i chiều củ một module hoặc t sk Một port ngõ r c thể được cấu hình từ các dạng: wire, reg, w nd, wor, hoặc tri Mặc định là wire
1 Cú pháp:
Input [msb:lsb] port ngõ vào
Output [msb:lsb] port ngõ ra
Inout [msb:lsb] port ngõ vào,r h i chiều
2 Ví dụ:
Module sample (b, e, c, a);
Input ; // một ngõ vào mặc định là kiểu wire
Output b, e; // h i ngõ r mặc định là kiểu wire
Output [1:0] c; /* ngõ r h i bit, phải được kh i báotrong một lệnh
kh i báo dạng reg chứ chung bằng số không dấu Nếu chúng chứ những số mà không định nghĩ thời gi n bi n dịch thì kích thư c mặc định là 32 bit Nếu chúng chứ hằng, sự tổng hợp điều chỉnh các số c kích thư c nhỏ nhất cần thiết cho sự bi n dịch
1 Cú pháp:
Integer t n biến nguy n;
…t n hằng nguy n…;
2 Ví dụ:
Integer ; // số nguy n đơn giản 32bit
Assign b= 63; // mặc định là một biến 7 bit
II Supply 0, Supply1:
Xác định chổ đường dẫn l n mức logic 0 ( đất), logic 1( nguồn) theo thứ tự định sẵn
Trang 18c = $time; // c = thời gi n mô phỏng dòng điện
IV Parameter (Tham số):
Một P r meter xác định 1 hằng số mà đƣợc đặt khi bạn cho ví dụ
cụ thể là một module Các này cho phép t c thể sử chữ
1 Cú pháp:
Parameter p r_1= gái trị, p r_2= gái trị, …;
Parameter [gi i hạn] p r_3 = giá trị;
Trang 19V TOÁN TỬ
I Toán tử số học:
Những toán tử này thực hiện các phép tính số học Dấu ‟+‟ và ‟-‟
c thể được sử dụng một trong h i toán tử đơn (-z) hoặc kép (x - y)
Toán tử
+, -, *, /, %
II Toán tử quan hệ:
Toán tử qu n hệ so sánh h i toán hạng và trả về một đơn bit là 0 hoặc 1.Những toán tử này tổng hợp vào dụng cụ so sánh Biến Wire và Reg là những biến dương Vì thế, (-3b001) = (3b111) và (-3b001) > ( 3b110) nhưng nếu là số nguy n thì -1< 6
ác toán tử quan hệ
<, <=, >, >=, = =, !=
III Toán tử bit_wire:
So sánh từng bit h i toán toán hạng
ác toán tử
~ (bitwire NOT), & (bitwire AND), | (bitwire OR), ^ (bitwire
XOR), ~^ hoặc ^~ (bitwire XNOR)
IV Toán tử logic:
Toán tử logic trả về 1 bit đơn 0 hoặc 1 chúng giống như toán tử bitwire chỉ là những toán hạng đơn bit Chúng c thể làm việc tr n biểu thức, số nguy n hoạc nh m bit, và coi nhu tất cả các giá trị không bằng 0 là ‟1‟ Toán tử logic được dùng nhiều trong lệnh điều kiện (if… else), khi chúng làm việc tr n biểu thức
Trang 20V Toán tử biến đổi:
C tác dụng tr n tất cả các bit củ một vectơ toán hạng và trả về giá trị đơnbit Những toán tử này là hình thức tự đổi số củ các toán tử bitwire ở tr n
Dịch toán tử đầu bằng chữ số củ các bit được định nghĩ bởi toán
tử thou h i.Vị trí còn trống sẽ được điền vào v i những số 0 cho cả
h i trường hợp dịch trái hoặc phải
VIII Toán tử điều kiện:
Giống như C/C++ Chúng định giá một trong h i biểu thức cơ bản trong một điều kiện N sẽ tổng hợp thành bộ đ cộng (MUX)
Trang 21Toán tử Tên
&, |, ~&, ~|, ^, ~^ Biến đổi: AND, OR, NAND, NOT, XOR,
= =, != Bằng và không bằng trong toán tử logic
& Bit_wire AND, nd tất cả các bit v i nh u
huỗi: là một mảng c nhiều kí tự đƣợc đặt trong dấu ””
hữ số: là những số không đổi, nhị phân, bát phân, thập phân,
Trang 22F: một trong bốn định dạng s u: b( số nhị phân), o( số bát phân), d(
20‟h B36E // 20 bit số hex
„o62 // 32 bit bát phân
II Chọn 1 phần tử bit và chọn 1 phần các bit
Đây là sự lự chọn một bít đơn hoặc một nh m bit theo thứ tự, từ một wire, reg hoặc từ th m số đặt trong ngoạc [ ] Chọn 1 phần tử bit và chọn 1 phần các bit c thể đƣợc dùng nhƣ là các toán hạng trong biểu thức bằng nhiều cách thức giống nh u mà các đối tƣợng
III Gọi hàm chức năng:
Giá trị trả về củ một hàm c thể đƣợc dùng trực tiếp trong biểu thức mà không cần gán trƣ c cho biến reg hoặc wire Gọi hàm chức năng nhƣ là một trong những toán hạng Chiều rộng bít củ giá trị trả về chắc chắn đƣợc biết trƣ c
Trang 23Input c, b;
Chk_bc = b^ c;
Endfunction
IV Wire, reg, và tham số:
Wire, reg, và th m số c thể đuợc dùng nhƣ là các toán hạng trong biểu thức
Verilog
VII MODULES
I Khai báo modules:
Một module là bản thiết kế chủ yếu tồn tại trong Verilog Dòng đầu ti n củ kh i báo module chỉ rõ d nh sách t n và port (các đối số) Những dòng kế tiếp chỉ rõ dạng I/O (input, output, hoặc inout)
và chiều rộng củ mỗi port Mặc định chiều rộng port là 1 bit
S u đ , những biến port phải đƣợc kh i báo wire, w nd, …, reg Mặc định là wire Những ngõ vào đặc trƣng là wire khi dữ liệu đƣợc chốt be n ngoài module Các ngõ r là dạng reg nếu những tín hiệu củ chúng đƣợc chứ trong khối lw ys hoặc initi l
1 Cú pháp:
Module tên module (danh sách port);
Input [msb:lsb] danh sách port ngõ vào;
Output [msb:lsb] danh sách port ngõ ra;
Inout [ msb:lsb ] danh sách port vào_ ra;
… các lệnh…
endmodule
2 Ví dụ
Module add_sub(add, in1, in2, out);
Wire, reg, v tham số
Input[7:0 ] in1, in2;
Wire in1, in2;
Output [7:0] out;
Reg out;
… các lệnh khác…
Endmodule
Trang 24II Chỉ định liên tiếp:
Các chỉ định li n tiếp được dùng để gán một giá trị l n tr n một wire trong một module Đ là các chỉ định thông thường b n ngoài khối lw ys hoặc khối initi l Các chỉ định li n tiếp được thực hiện
v i một lệnh gán ( ssign) rõ ràng hoặc bằng sự chỉ định một giá trị đến một wire trong lúc kh i báo Chú ý rằng, các lệnh chỉ định li n tiếp thì tồn tại và được chạy li n tục trong suốt quá trình mô
phỏng Thứ tự các lệnh gán không qu n trọng Mọi th y đổi b n phải củ bất cứ ngõ vào sẽ lập tức th y đổi b n trái củ các ngõ r
1 Cú pháp:
Wire biến wire = giá trị;
Assign biến wire = biểu thức;
2 Ví dụ
Wire [ 1:0 ] = 2‟b 01;
Assign b = c &d;
Assign d = x | y;
III Module instantiations:
Những kh i báo module là những khuôn mẫu mà n được tạo n n
từ các đối tượng thực tế ( inst nti tion) Các module đơn cử b n trong các module khác, và mỗi dẫn chứng tạo một đối tượng độc nhất từ khuôn mẫu Ngoại trừ đ là module mức tr n là những dẫn chứng từ chính chúng Các port củ module ví dụ phải thỏ những dịnh nghĩ trong khuôn mẫu Đây là mặt lý thuyết: bằng t n, sử dụng dấu chấm(.) ”.t n port khuôn mẫu ( t n củ wire kết nối đến port)” Bằng vị trí, đặt những port ở những vị trí giống nh u trong
d nh sách port củ cả khuôn mẫu lẫn inst nce
1 Cú pháp:
T n inst nce1 (d nh sách kết nối port );
T n inst nce2(d nh sách kết nối port);
Trang 25output [3:0]c;
assign c = a&b;
endmodule
// module instantiations
wire [3:0] in1, in2;
wire [3:0] o1, o2;
Verilog c 4 mức khuôn mẫu:
• Chuyển mạch Không đƣợc đề cập đến ở đây
I Những chỉ định theo thủ tục:
Là những chỉ định dùng trong phạm vi thủ tục Verilog (khối
lw ys và initi l) Chỉ biến reg và integers (và chọn đơn bit/ nh m bit củ chúng, và kết nối thông tin) c thể đƣợc đặt b n trái dấu „=‟ trong thủ tục B n phải củ chỉ định là một biểu thức mà c thể dùng bất cứ dạng toán tử nào
II Delay trong chỉ định:
Trong chỉ định trễ t là khoảng thời gi n trải qu trƣ c khi một lệnh đƣợc thực thi và b n trái lệnh gán đƣợc tạo r V i nhiều chỉ định trễ (intr - ssignment del y), b n phải đƣợc định giá trị trực