Bài báo cáo môn Thiết kế hệ thống và vi mạch tích hợp đề tài "Module điều khiển đèn giao thông"

Bài báo cáo môn Thiết kế hệ thống và vi mạch tích hợp đề tài "Module điều khiển đèn giao thông" của Đại học Sư phạm Kỹ thuật Thành phố Hồ Chí Minh với những kiến thức và thông tin bổ ích giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học vào thực tiễn cuộc sống. Mời bạn đọc đón xem!

lOMoARcPSD|37054152
B
GIÁO D
ỤC VÀ ĐÀO TẠ
O
TRƯỜNG ĐẠ
ỌC SƯ PHẠ
M K
THU
T TP. H
CHÍ MINH
KHOA ĐÀO ĐẠ
O CH
ẤT LƯỢ
NG CAO
___________________________________
BÁO CÁO
THI
T K
H
TH
NG VÀ VI M
CH TÍCH H
P
ĐỀ
TÀI : MODULE ĐIỀ
U KHI
ỂN ĐÈN GIAO THÔNG
GVHD:
TS.
ĐỖ
DUY TÂN
HP:
ICSD336764 - 02CLC
NHÓM SINH VIÊN TH
C HI
N:
1
. Di
p B
o Ti
ế
18119123
n
. Nguy
2
n Phú Thi
n
20119043
3
. Nguy
n Hoàng Quân
20119272
4
. Ngô Qu
c Thái
20119280
TP. H
CHÍ MINH
THÁNG 5/2022
lOMoARcPSD|37054152
MỤC LỤC
CHƯƠNG 1: TNG QUAN ......................................................................................... 1
1.1 Đặt vấn ề ................................................................................................................... 1
1.2 Mục tiêu ề tài ............................................................................................................ 1
1.3 Ni dung nghiên cu ............................................................................................... 2
1.4 B cc ........................................................................................................................ 2
1.5 Gii hn .................................................................................................................... 3
CHƯƠNG 2: CƠ SỞ LÝ THUYT ............................................................................ 4
2.1 Ngôn ng lp trình Verilog..................................................................................... 4
2.1.1 Gii thiu v Verilog ....................................................................................... 4
2.1.1.1 Khái quát ................................................................................................... 4
2.1.1.2 Mục ích sử dng Verilog HDL ................................................................. 4
2.1.2 Các kiu d liu trong Verilog ....................................................................... 5
2.1.2.1 Kiu d liu net ......................................................................................... 5
2.1.2.2 Kiu d liu Register ................................................................................. 5
2.1.2.3 Thông s .................................................................................................... 6
2.1.2.4 S nguyên .................................................................................................. 6
2.1.2.5 Tp giá tr .................................................................................................. 6
2.1.3 Mô t module .................................................................................................. 7
2.1.4 Toán t và các phát biểu iều khin ................................................................ 7
2.1.4.1 Toán t ...................................................................................................... 7
2.1.4.2 Các cấu trúc iều khin ............................................................................... 9
2.1.5 Phép gán........................................................................................................ 10
2.1.6 Mô hình structural và procedual ................................................................. 12
2.1.7 Mô hình mt s thành phần logic cơ bản .................................................... 12
2.1.8 Tối ưu hóa mô hình ...................................................................................... 13
2.2 Quy trình thiết kế h thng .................................................................................. 13
2.2.1 Quy trình thiết kế mt ASIC......................................................................... 14
2.2.1.1 Di cng .................................................................................................. 14
2.2.1.2 Cell chun ................................................................................................ 15
2.2.2 Quy trình thiết kế da trên FPGA ............................................................... 16
lOMoARcPSD|37054152
2.2.3 Công ngh FPGA ......................................................................................... 17
2.2.3.1 Nguyên lý Antifuse ................................................................................. 17
2.2.3.2 Nguyên lý tế bào...................................................................................... 18
2.3.3.3 Nguyên lý UVEPROM và EEPROM...................................................... 18
CHƯƠNG 3: THIẾT K H THNG ..................................................................... 19
3.1 Sơ ồ khi thiết kế ................................................................................................... 19
3.2 Các module ............................................................................................................. 19
3.2.1 Module chia xung ......................................................................................... 19
3.2.2 Module Mux 2 sang 1 ................................................................................... 20
3.2.3 Module chuyn t s nh phân sang s BCD .............................................. 21
3.2.4 Module led chp tt ...................................................................................... 23
3.2.5 Module máy trạng thái dành cho èn giao thông ......................................... 24
3.2.6 Module chính ................................................................................................ 25
3.2.7 Module test .................................................................................................... 27
CHƯƠNG 4: KẾT QU ............................................................................................. 28
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIN ......................................... 28
5.1 Kết lun .................................................................................................................. 29
5.2 Hướng phát trin ................................................................................................... 29
TÀI LIU THAM KHO .......................................................................................... 29
lOMoARcPSD|37054152
CHƯƠNG 1: TNG QUAN
1.1 Đặt vấn ề
Ngày nay cùng với sự phát triển của khoa học kthuật, hội ngày càng văn
minh hiện ại, sự phát triển ô thị ngày một i lên. Nhu cầu về giao thông ngày càng
trở nên cấp thiết, nhất là trong các khu vực thành thị.
Với cuộc sống hiện ại và sự phát triển nhanh chóng của nền kinh tế và lượng dân
cư ông úc. Ùn tắc giao thông gây thiệt hại không nhỏ cho sự phát triển kinh tế quốc gia,
giảm hiệu suất lao ộng tăng các chi phí không cần thiết trong qtrình sản xuất. Trong
bối cảnh kinh tế lạm phát khó khăn như hiện nay, lãng phí trong giao thông lại ặt
thêm một gánh nặng ối với ời sống kinh tế của người dân. Nguyên nhân của vấn này
một phần là do cơ sở hạ tầng chưa áp ứng ược nhu cầu lưu thông hiện nay, một phần
do việc phân chia, ịnh thời gian của hệ thống èn giao thông hiện tại các giao lộ chưa
hợp lý khiến cho số lượng phương tiện giao thông bị ùn tắc theo thời gian rồi dẫn ến tắc
nghẽn giao thông. Qua thực trạng ó, nhóm muốn y dựng một hệ thống iều thiết giao
thông tự ộng, phân luồng trực tiếp hiệu quả hơn phần nào ó giảm bớt tình trạng ùn
tắc giao thông. Đồng thời tiêu tiếp cận, bổ sung các kiến thức mới cũng như củng cố lại
những kỹ năng kiến thức trong suốt quá trình học tập .
Tại Việt Nam số lượng xe máy trong những năm qua tăng một cách ột biến, mật
ộ xe lưu thông trên ường ngày một nhiều, trong khi ó hệ thống ường xá ở Việt Nam còn
quá nhiều hạn chế nên thường y ra các hiện tượng như kẹt xe, ách tắc giao thông, ặc
biệt là tai nạn giao thông ngày càng phô biến trở thanh mối hiểm họa cho nhiều người.
Vì lý do ó các luật giao thông lần lượt ra ời và ược ưa vào sử dụng một cách lặng
lẽ rồi dần trở nên phố biến như hiện nay. Trong ó hệ thống èn giao thông là công cụ iều
khiến giao thông công cộng thực tế và hiệu quả có vai trò rất lớn trong việc ảm bảo an
toàn và giảm thiếu tai nạn giao thông.
1.2 Mục tiêu ề tài
Trước tình hình phương tiện tham gia giao thông ngày càng gia tăng không ngừng
và hệ thống giao thông nước ta ngày càng phức tạp. Dần ến tình trạng ùn tắc tai nạn
giao thông ngày càng gia tăng. Xuất phát từ nhu cầu thực tế ó, chúng ta thiết nghĩ cần
các giải pháp ể giải quyết một phần nào ó về các nhu cầu thực tế trên.
lOMoARcPSD|37054152
" Hệ thống èn giao thông thông minh" hết sức cần thiết, thnhững
tính năng ược cài ặt sẵn ể giải quyết những sự cố kịp thời, tránh thời giờ lãng phí trong
khi giao thông bị ùn tắt tại các ngã tư.
Và ể ảm bảo giao thông ược an toan thông suốt thì việc sử dụng các hệ thống
tín hiệu ế iều khiến phân luồng tại các nút giao thông rất cần thiết. Với tầm quan
trọng như vậy hệ thống iều khiến tín hiệu giao thông cần ảm bảo yêu cầu:
- Đảm bảo hoạt ộng một cách chính xác, liên tục trong thời gian dài
- Độ tin cậy cao
- Đảm bảo làm việc ốn ịnh, lâu dài
- Dễ quan sát cho người i ường
- Chi phí nhỏ, tiết kiệm năng lượng
1.3 Ni dung nghiên cu
Tìm hiểu nguyên cứu các kiến thức ã học môn học thiết kế vi mạch tích
hợp ể xây dựng module iều khiển èn giao thông dựa trên ngôn ngữ verilog
Công cụ thực hiện là phần mềm ISE Xilinx Design Suite.
1.4 B cc
Chương 1: Giới thiệu
Trình bày vấn ề dẫn nhập lý do chọn ề tài, mục tiêu, nội dung nghiên cứu, các giới
hạn thông số và các nội dung cơ bản có liên quan
Chương 2: Cơ sở lý thuyết
Tìm hiểu và ưa ra những cơ sở lý thuyết có liên quan ến tài ể dẫn chứng cho việc
thiết kế hệ thống module iều khiển àn giao thông
Chương 3: Thiết kế hệ thống
Thiết kế tính toán ,phân tích, y dựng khối, phần cứng, thiết kế
chương trình , giao diện mô phỏng quá trình thực hiện.
Xây dựng chương trình hoàn chỉnh cho toàn hệ thống, các m, các lưu ồ, các
chương trình ược sử dụng. Lắp ráp và chạy chương trình.
Viết tài liệu hướng dẫn sử dụng, quy trình thao tác.
lOMoARcPSD|37054152
Chương 4: Kết quả và ánh giá
Nêu các kết quả ạt ược khi thực hiện chương trình, phân tích, nhận xét, ánh giá kết
quả thực thi ược
Chương 5: Kết luận và hướng phát triển Kết
luận và hướng phát triển.
Tóm tắt những kết quả ạt ược, những hạn chế và nêu lên c hướng phát triển trong
tương lai.
1.5 Gii hn
Trong qtrình thực hiện tài thể không tránh ược các thiếu sót mức
hoàn thành tài, mong thầy xem xét thể ưa ra nhận xét chúng em thể khắc
phục ược những thiếu sót ó và có thể hoàn thiện cũng như mở rộng ề tài sau này.
một số iều khiện không cho phép nên chúng em chỉ thực hiện mô phỏng trên
phần mềm ISim không kit FPGA Xilinx Spartan-3E nạp code. Nên chúng em
xin thay thế tần số 1Hz bằng 1KHz ể dễ dàng cho việc mô phỏng hơn.
lOMoARcPSD|37054152
CHƯƠNG 2: CƠ S LÝ THUYT
2.1 Ngôn ng lp trình Verilog
2.1.1 Gii thiu v Verilog
2.1.1.1 Khái quát
Verilog một trong hai ngôn ngữ tả phần cứng chính (gồm VHDL Verilog
HDL) ược người thiết kế phần cứng sử dụng ể mô tả, thiết kế các hệ thống số, ví dụ như
máy tính hay linh kiện iện tử.
Verilog dễ học dsử dụng hơn VHDL. Verilog ược chuẩn hoá theo chuẩn
IEEE vào năm 1995 và 2001. Verilog rất giống ngôn ngữ C ược giới chuyên môn
nghiên cứu, sử dụng nhiều.
Verilog HDL thể ược sử dụng thiết kế hệ thống số nhiều mức khác nhau,
dụ ở mức cao như các mô hình ặc trưng ến các mức thấp như hình bố trí dây, iện trở,
transistor trên một mạch tích hợp; mô tả các cổng logic, flip_flop trong hệ thống số; mô
tả thanh ghi và sự di chuyển dữ liệu giữa các thanh ghi (RTL - Register Transfer
Level).
2.1.1.2 Mục ích sử dng Verilog HDL
Hệ thống sốmột hệ thống phức tạp bậc cao. Ở cấp ộ chi tiế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ết kế mức cổng không còn sử 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 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ột mức giản của cổng logic hầu như ích khi nó chỉ biểu
diễn một mạng lưới phức tạp các liên kết không theo chức năng của thiết kế.
Cách sử dụng cơ bản của Verilog HDL trong thiết kế mch tích hợp là mô phỏng
thiết kế tạo mẫu trên FPGA trước khi chuyển sang sản xuất. Mục tiêu của Verilog
không phải tạo ra những chip VLSI sử dụng Verilog tả một cách chính c
chức năng của bất kỳ hệ thống số nào và nạp chương trình tạo mẫu n FPGA, ví dụ như
máy tính, các bộ vi xử lý,… tuy tốc chậm lãng phí diện tích hơn. Những thiết kế
mức thấp hơn trong Verilog ược thực hiện trên VLSI ể ạt ến tốc ộ cực ại và có diện tích
cực tiểu. Tuy nhiên sử dụng thiết kế dùng Verilog trên FPGA sẽ tiết kiệm chi pvà thời
gian thiết kế.
lOMoARcPSD|37054152
2.1.2 Các kiu d liu trong Verilog
Có 2 kiểu dữ liệu:
- 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) ược khai báo không tầm, theo mặc ịnh các ối tượng y rộng 1-bit ược
tham chiếu dạng hướng. Nếu một tầm ược khai báo, ối tượng có nhiều bit ược
gọi là vector. Một vector có thể ược tham chiếu trong trạng thái toàn bộ, một phần hoặc
từng bit riêng rẽ khi cần.
2.1.2.1 Kiu d liu Net
Các ối tượng dữ liệu net khả năng tổng hợp, sẽ biểu diễn 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 kế và ược
dùng ể kết nối các cổng logic, các module. Các tín hiệu kiểu wire chỉ ược ọc, không ược
gán trong các hàm hoặc các block. Tín hiệu kiểu wire không lưu trử giá trị của nó và nó
phải ược gán giá trị bằng các lệnh gán ồng thời hoặc ược kết 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. Một cổng
OR sẽ ược tổng hợp.
Wand: hình AND- nối y của vài mạch ang kích cùng một net. Một cổng
AND sẽ ược tổng hợp.
2.1.2.2 Kiu d liu Register
Kiểu dữ liệu register u giữ giá trị từ một phát biểu gán thủ tục ến phát biểu gán
thủ tục kế tiếp ý nghĩa ối tượng y lưu giữ giá trị trên c chu kdelta
phỏng. Phép n thủ tục một phép gán cho một kiểu dữ liệu của register không
lOMoARcPSD|37054152
m ý rảng một thanh ghi vật lý sẽ ược tổng hợp, mặc dù phép gán ược sử dụng cho mục
ích này.
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 phát biểu if case. Phép gán thủ tục u giữ giá trị trong một kiểu dữ liệu của
register và ược duy trì cho ến phép gán thủ tục kế tiếp cho kiểu dữ liệu của register.
2.1.2.3 Thông s
Một kiểu dữ liệu thông số sẽ ịnh nghĩa một hằng. Chỉ các hằng thông số nguyên
(không thực ) ược sử dụng với phần mềm tổng hợp. 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 toàn cục ối với một module hay cục bộ ối với
một phát biểu always riêng biệt
Ví dụ:
Parameter A = 4’b 1011, B = 4’b 1000 ;
Parameter Stop = 0, Slow = 1, Medium = 2, Fast = 3;
2.1.2.4 S nguyên
Các kiểu dữ liệu nguyên ược dùng khai o các biến công dụng tổng quát
sử dụng trong các vòng lặp, chúng không có ý ịnh phần cứng trực tiếp và lưu giữ giá trị
số. Không tầm nào ược chỉ khi một ối tượng nguyên ược khai báo. Đây là các số
nguyên có dấu và tạo ra các kết quả dạng bù 2.
Ví dụ: integer N;
2.1.2.5 Tp giá tr
Các ối tượng dữ liệu wire và dữ liệu reg có thể có những giá trị sau :
0 logic 0 hoặc sai
1 logic 1 hoặc úng
X giá trị logic không xác ịnh
Z trạng thái tổng trở cao của cổng ba trạng thái
Biến reg ược gán giá trban ầu X ầu chương trình. Biến wire không ượ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.
lOMoARcPSD|37054152
Ví dụ:
reg [7:0] A,B; //thanh ghi A B 8 bit từ 0 7, bit cao nhất bit 7 (MSB).
wire [3:0] data; //dây data có 4 ường từ 0 – 3.
Vùng nhớ: Vùng nhớ ược ịnh nghĩa giống như vectơ của thanh ghi. dụ một vùng
nhớ gồm 1024 từ, mỗi từ 16 bit 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ừ của vùng nhớ, muốn làm
iều này phải chuyển dữ liệu vào một thanh ghi trung gian.
2.1.3 Mô t module
Định nghĩa module luôn luôn bắt ầu bằng từ khóa module. Tên module, danh
sách port, khai báo port, thông số (parameter) phải hiện diện trước tiên 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 tác với
môi trường bên ngoài.
Năm thành phần trong module là:
- 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
Các thành phần y thể bất knơi nào trong module không cần thứ tự.
Phát biểu endmodule là phát biểu sau cùng trong ịnh nghĩa module.
Mọi thành phần (ngoại trừ module, tên module và endmodule) là y chọn, có thể
trộn lẫn tương thích theo yêu cầu thiết kế. Verilog cho phép nhiều module ược ịnh
nghĩa trong một tập tin duy nhất và không cần thứ tự.
2.1.4 Toán t và các phát biểu iều khin
2.1.4.1 Toán t
Gồm các toán tử quan hệ so sánh 2 toán hạng và trả ra giá trị logic. Đúng là 1, sai là 0.
lOMoARcPSD| 37054152
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 toán tử iều kiện
! : ảo logic
&& : AND logic
|| : OR logic
Các toán tử set bit
~ : ảo bit
& : AND
| : OR
^ : XOR
~& : NAND
~| : NOR
Các toá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
Ví dụ: dùng iều lệnh assign ể viết một module giải a hợp từ 2 ường sang
4 ường (bạn có thể tự viết giải a hợp từ 3 sang 8 hay 4 sang 16)
module demux(data, in1, in0, out0, out1, out2, out3);
input data; input in0,in1; output
out0,out1,out2,out3; assign out0=
data&(~in1)&(~in0); assign out1=
data&(~in1)&(in0);
lOMoARcPSD|37054152
assign out2= data&(in1)&(~in0);
assign out3= data&(in1)&(in0); endmodule
2.1.4.2 Các cấu trúc iều khin
Verilog rất phong phú các câu lệnh iều khiển thể sử dụng trong phần thủ tục.
Hầu hết chúng rất quen thuộc với những người lập trình bằng ngôn ngữ C. Điểm khác
biệt lớn nhất chính thay dấu ngoặc {} trong ngôn ngữ C bằng từ khóa begin end
trong Verilog HDL. Như ã nói trên, dấu ngoặc {,} dùng nối chuỗi các bit. 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
Ngoài ra còn có các vòng lặp for, while và repeat. Tuy nhiên chúng rất hiếm khi
sử dụng trong việc mô tả các module nên bài viết này sẽ không ề 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 ngõ Con là 1 thì
ngõ ra bằng ngõ vào, nếu Con là 0 thì ngõ ra sẽ ở trạng thái tổng trở cao.
module tristate(In, Con, Out);
input In, Con; output
Out; reg Out;
always
begin
if (Con==1&apos;b1)
Out=In; else
Out=1&apos;bz;
end
lOMoARcPSD|37054152
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<B)
A_LT_B=1’b1;
else A_LT_B=1’b0; end
endmodule
2.1.5 Phép gán
Toán tử gán dùng ể gán kết quả trả về của 1 biểu thức(hàm logic).
Phép gán ồng thời: phép gán này chỉ dùng ể gán giá trị ở bên ngoài các block
Syntax:
assign signal1 = signal2; ví dụ:
assign a = b & c;
Phép gán tuần tự chỉ dùng n giá trị bên trong các block. 2 loại phép gán
non-blocking assignment " <= " và blocking assignment "=".
Blocking ược xem xét giống như phép gán trong ngôn ngữ C. Tín hiệu sẽ ược
gán giá trị ngay lập tức. giá trị mới này sẽ ược sử dụng làm giá trị cho tín hiệu ó
cho lệnh tiếp theo phía dưới.
Non-Blocking ược xem xét giống như phép gán ồng thời các lệnh gán
nonblocking trong 1 block sẽ ược gán ồng thời sau khoản thời gian t sau khi các lệnh
trong block ươc thực hiện. Tín hiệu sẽ ược gán giá trị sau khoản thời gian t . Giá trị
lOMoARcPSD| 37054152
mới này sẽ không sử dụng làm gtrị cho tín hiệu ó, tín hiệu vẫn lấy giá trị sử
dụng cho lệnh tiếp theo phía dưới. Giá trị mới sẽ ược sữ dụng cho lần thực hiện block
tiếp theo.
Ví dụ:
Begin
a = 2;
b = a+1;
a <= 3; c
= a; end
Đề nghị sử dụng nonblocking assignment trong always block dùng tả hệ
tuần tự và sử dụng blocking assignment trong always block dùng ể mô tả hệ tổ hợp.
Always block cấu trúc sở trong hình mức RTL. Các always block ược
xem như là các module thực thi ồng thời.
Always block thược sử dụng tổng hợp ra các bchốt (latch), các flipflop
hoặc hệ tổ hợp.
Khối always ượ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óa or ).
Syntax: always @(event_1 or
event_2 or ...) begin:
name_for_block ... statements ...
End
Đề nghị sử dụng always block ể mô tả thiết kế hệ tồ hợp như sau:
always @( tất cả các tín hiệu input của hệ tổ hợp ở trong list sự kiện mức logic)
begin
end
Đề nghị sử dụng always block ể mô tả thiết kế hệ tuần tự như sau:
always @(posedge clk or negedge rst_) begin
if (rst_ == 1'b0) {
lOMoARcPSD|37054152
… }
else {
}
end
2.1.6 Mô hình structural và procedual
Các phát biểu thủ tục trong Verilog ược sử dụng tả thiết kế mức trừu tượ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ế phức tạp.
Tuy nhiên với sự thay ổi nhỏ trong cách lập trình mô tả sẽ y ra sự thay ổi lớn về mạch
phần cứng ược sinh ra. Các phát biểu thủ tục chỉ ược sử dụng bên trong các thủ tục
(always, function …).
2.1.7 Mô hình mt 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õ o nên khi ngỏ vào
thay ổi ngỏ ra sẽ thay ổi theo.
Để mô tả sự phụ thuộc vào giá trị ngõ vào của ngõ ra. Trong verilog sữ dụng lệnh
gán ồng thời.
Ví dụ: Mô tả bộ cộng bán phần
Input
Output
H
t
h
p
C = A and B;
S = A or B;
A
B
C
S
Half Adder
assign C = A & B;
assign S = A ^ B;
lOMoARcPSD|37054152
A
B
S
C
0
0
0
0
0
1
1
0
1
0
1
0
1
1
0
1
2.1.8 Tối ưu hóa mô hình
Miêu tả những tối ưu hóa thể ược thực thi bằng 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 bộ tối ưu
hóa tạo ra mã máy tối ưu hóa: code thì ược sắp xếp lại, dịch chuyển theo thứ tự, hơn
thế nữa giảm thời gian thực thi, tối ưu hóa cũng thể thực thi bởi bộ tối ưu hóa logic.
Mạch logic ược tạo ra thì dễ dàng bị ảnh ởng bởi cách một hình ược miêu tả.
Di chuyển một phát biểu từ một nơi này ến một nơi khác hoặc chia ra những diễn giải
thể ảnh hưởng sâu sắc lên cổng logic ược tạo ra, thể tăng hoặc giảm s
lượng những cổng tổng 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.
d. Giao hoán và kết hợp.
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.
2.2 Quy trình thiết kế h thng
Các con Chip hiện nay ang tồn tại trong hầu hết các vật dụng iện tử, nhận thấy vai
trò óng góp to lớn của Chip do ó trên thế giới ngành công nghiệp 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ẻ
lOMoARcPSD|37054152
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ỹ thuật phải có chất
lượng cao.
2.2.1 Quy trình thiết kế mt ASIC
Mạch tích hợp ứng dụng cụ thể ASIC linh kiện ược sản xuất chưa hoàn chỉnh
(hay một phần) bởi nhà cung cấp ASIC dạng tổng quát. Quá trình chế tạo ban ầu y
rất phức tạp, mất nhiều thời gian phần ắc tiền nhất trong toà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ẽ 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ẽ ược hoàn
tất khi người thiết kế chip một thiết kế cụ thể người y muốn thực hiện lên trên
ASIC. Nhà cung cấp ASIC thường có thể thực hiện iều y trong i tuần gọi ây
thời gian làm thay ổi hoàn toàn.
Có hai loại linh kiện ASIC, ó là dải cổng (gate array) và cell chuẩn (standard cell).
2.2.1.1 Di cng
Được chia thành hai loại dải cổng dải cổng ược chia kênh hay nh dải cổng
không có kênh:
- Dải cổng kênh ược sản xuất một hoặc vài hàng cell 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 sdụng ể liên kết nối các cell 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.
- Dải cổng không nh ược sản xuất với rất nhiều cell bản ngang qua chip
silicon không có các kênh chuyên dụng cho việc liên kết nối. Các dải cổng chứa từ
vài ngàn cổng tương ương (như cổng NAND 2 ngõ vào) ến vài trăm ngàn cổng tương
ương hoặc hơn nữa. Do không gian ịnh tuyến ( liên kết nối) bị giới hạn trên các dải
cổng kênh, cho nên số lượng cổng y khó thể ược sử dụng hết tổng scổng
sẵn (khoảng từ 70 ến 90%)
- 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 bản mẫu, thanh ghi, macro cứng và macro mền. Các macro cứng và macro mềm
thường phức tạp của MSI LSI, chẳng hạn như mạch ghép nh, mạch so sánh
mạch ếm. Macro cứng ược ịnh nghĩa bởi nhà sản xuất dưới dạng các mẫu cell
lOMoARcPSD|37054152
bản. Khi so sánh các macro mền ược ặc trưng hóa bởi người thiết kế, như việc chỉ ra
rộng các bit trong mạch so sánh hai ngõ vào chẳng hạn.
2.2.1.2 Cell chun
Mô hình luồng thiết kế ASIC
Các linh kiện cell chuẩn không khái niệm về cell bản không thành
phần nào ược sản xuất trước trên chip silicon. Nhà sản xuất tạ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 xuất chip, nghĩa silicon ược tận
dụng hiệu quả hơn nhiều so với các dải cổng. Nhà sản xuất cung cấp các thư viện macro
cứng macro mềm chức những phần tử phức tạp của LSI VLSI , chẳng hạn
như bộ iều khiển, ALU và bộ vi xử lý.
Ngoài ra thư viện macro mền còn chứa nhiều mạch chức năng RAM mà ta không
thể thực hiện ược một cách hiệu quả các linh kiện dải cổng; Mạch chức ng ROM
thường ược thực hiện hiệu quả hơn trong các mẫu cell cơ bản.
lOMoARcPSD|37054152
2.2.2 Quy trình thiết kế da trên FPGA
Dải cổng lập trình ược dạng trường là linh kiện ược sản xuất hoàn chỉnh nhưng vẫn
duy trì ược tính ộc lập với thiết kế. Mỗi nhà sản xuất FPGA ều ă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 những khối này ược nối với nhau bằng các ma trận chuyển mạch lập trình
ược. Để cấu hình cho một linh 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ẽ.
Như vậy với các nh năng của ASIC FPGA sẽ ược chọn lựa y vào giá thành
của sản phẩm. Tuy nhiên với FPGA, việc lập trình thường dễ dàng nhanh chóng, chức
năng y thuộc khách hàng. Hơn nữa các FPGA cho phép việc bố tbo mạch in bằng
công cụ CAD ược tiến hành, trong khi thiết kế bên trong FPGA vẫn ang hoàn tất. Thủ
tục này cho phép ta kiểm tra sự tích hợp phần cứng phần mền. Nếu việc kiểm tra hệ
thống thất bại, thiết kế này có thể ược sửa ổi và linh kiện khác FPGA ược lập trình ngay
lập tức với chi phí tương ối 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ại sẽ hoàn toàn dễ dàng với chi phí không áng kể.
Với những lý do trên, các thiết kế thường trước tiên hướng ến FPGA kiểm tra hệ
thống và thời gian sản xuất nhỏ. Kế ến, thiết kế ược ịnh hướng lại ến một ASIC ể sản
xuất quy lớn hơn. Các thỏa hiệp thiết kế phải ược xem xét khi ịnh hướng lại từ
FPGA sang ASIC. Thí dụ như thời gian giữ dài thể không bao giờ xuất hiện trong
ASIC do tốc ộ thực hiện chức năng ược cải tiến.
lOMoARcPSD|37054152
Mô hình luồng thiết kế FPGA
2.2.3 Công ngh FPGA
2.2.3.1 Nguyên lý Antifuse
Cấu trúc Antifuse:
(a) Phần giao nhau
(b) Hình vẽ ơn giản
(c) Antifuse hoạt ộng như 1 công tắc
Chú thích : Antifuse: cầu chì nghịch.
lOMoARcPSD|37054152
Difussion: khuyếch tán.
Lập trình bằng dòng iện.
* Ưu khuyết iểm:
Kích thước nhỏ.
Quy trình chế tạo khác với công nghệ CMOS.
2.2.3.2 Nguyên lý tế bào
Cấu trúc tế bào Sram:
Cấu trúc tế bào SRAM (hãng Xilinx)
* Ưu khuyết iểm:
Tái sử dụng nâng cấp thiết kế dễ dàng. Cập nhật thay ổi hệ thống 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ước lớn hơn antifuse
2.3.3.3 Nguyên lý UVEPROM và EEPROM
Nguyên lý hoạt ộng Transistor EPROM:
Cấu trúc transistor EPROM (hãng Xilinx) *
Ưu khuyết iểm:
Tái lập trình không cần bộ nhớ ngoài. Diện tích nhỏ.
Không tái cấu hình trực tiếp trên mạch.
lOMoARcPSD|37054152
CHƯƠNG 3: THIT K H THNG
3.1 Sơ ồ khi thiết kế
3.2 Các module
3.2.1 Module chia xung
FPGA prototype kit cung cấp mạch dao ộng tần số cao (từ 50Mhz ến 100MHz).
Trong một số ứng dụng cần tần số thấp hơn, dụ mạch ếm, mạch ghi dịch, hoặc iều
khiển ngoại vi cần các xung clock có tần số khác nhau thấp hơn thể quan sát ược.
Module chia xung ược thiết kế nhằm tạo ra một hoặc nhiều ngõ ra xung clock có tần số
thấp hơn.
lOMoARcPSD|37054152
Mạch chia xung thể ược thiết kế bằng nhiều cách khác nhau, trong ó, thể
sử dụng mạch ếm nhị phân n-bit ể thiết kế mạch chia xung.
Module chia xung này lấy tần số 50Mhz từ kit FPGA ể ưa vào ngõ vào tại ngõ
ra nó sẽ cho ra tần số là 1 KHz.
3.2.2 Module Mux 2 sang 1
Bộ ghép kênh , ược viết tắt “MUX” hoặc “MPX”, một mạch logic tổ hợp
ược thiết kế ể chuyển một trong số các ường ầu vào sang một ường ầu ra chung duy nhất
bằng cách áp dụng tín hiệu iều khiển. Bộ ghép kênh hoạt ộng giống như công tắc xoay
nhiều vị trí hoạt ộng rất nhanh kết nối hoặc iều khiển nhiều ường ầu vào ược gọi là
“kênh” tại một thời iểm ến ầu ra.
Mạch ghép kênh hai sang một một ngõ iều khiển s nên chúng tạo ra hai trạng
thái logic. Mỗi trạng thái tại một thời iểm sẽ cho phép một ngõ in nào ó truyền ến
ngõ ra out.
lOMoARcPSD|37054152
3.2.3 Module chuyn t s nh phân sang s BCD
lOMoARcPSD|37054152
Giải thuật chuyển ổi từ nhị phân sang BCD
Dịch số nhị phân sang trái 1 bit.
Nếu số nhị phân trong nhóm số BCD nào hơn hơn 5 thì cộng nó với 3.
Lặp lại quá trình.
lOMoARcPSD|37054152
3.2.4 Module led chp tt
Tạo ra èn vàng chớp tắt.
lOMoARcPSD|37054152
3.2.5 Module máy trạng thái dành cho èn giao thông
Máy trạng thái ược sử dụng thiết kế các hệ thống số trong ó trạng thái của
hệ thống có thể chuyển ổi giữa nhiều trạng thái ược ịnh nghĩa trước. Mô hình máy trạng
thái là một mạch tuần tự ồng bộ, trong ó ngõ ra có thể phụ thuộc vào ngõ vào (mô hình
lOMoARcPSD|37054152
Mealy) hoặc ngõ ra chỉ phụ thuộc vào các trạng thái bên trong của hthống (Mô nh
Moore).
Ở module này ta có bốn trạng thái:
Trạng thái 1: Ta có biến ếm count = 15, và èn X1 và D2 sẽ ở mức 1 còn các
èn lại thì ở mức 0.
Trạng thái 2: Ta biến ếm count = 5, èn V1 D2 sẽ mức 1 còn các
èn lại thì ở mức 0.
Trạng thái 3: Ta có biến ếm count = 15, và èn D1 và X2 sẽ ở mức 1 còn các
èn lại thì ở mức 0.
Trạng thái 4: Ta biến ếm count = 5, èn D1 V2 sẽ ở mức 1 còn các
èn lại thì ở mức 0.
Sau khi kết thúc trạng thái thứ 4 thì nó sẽ quay lại trạng thái thứ 1.
3.2.6 Module chính
Ban ầu tao khởi tao các ngõ vào cho clk, rs ,s và các ngõ ra X1, V1, D1, X2, V2, D2
lOMoARcPSD|37054152
(biểu thị cho èn giao thông xanh ỏ vàng), ONES, TENS, HUNDREDS, ONES0,
TENS0, HUNDREDS0 (biểu thị cho số hiển thị hàng ơn vị, hàng chục, hàng trăm ).
Ta tiếp tục khởi tạo q[5:0], q1[5:0], q2[5:0], q3[5:0] , clko, counter1[7:0],
counter2[7:0] và khai báo chúng ở kiểu dữ liệu wire.
Chức năng các module ược gọi trong chương trình chính:
Module traficlight: Tạo ra tín hiệu èn giao thông và các biến ếm
Module HEX2BCD: Module này chuyển các biến ếm ra số hàng ơn vị, hàng
chục, hàng trăm ể có thể hiện thị trên LCD.
Module xung: Tạo ra xung 1KHz cho module ledchoptat.
Module ledchoptat: Tạo ra èn vàng chớp tắt.
Module mux2_1: với s = 0 thì èn giao thông sẽ hoạt ộng bình thường khi s =
1 lên mức 1 thì èn sẽ chuyển sang dạng èn vàng chớp tắt.
lOMoARcPSD|37054152
3.2.7 Module test
Tạo một xung clk bằng khối always, ưa rs lên 1 èn giao thông bắt ầu hoạt ộng
và sau #90000000 ưa s lên 1 ể thực hiện chế ộ èn vàng nhấp nháy.
lOMoARcPSD|37054152
CHƯƠNG 4: KẾT QU
Đèn xanh sáng và biến ếm ếm từ 15 về 0 rồi tắt chuyển sang èn vàng sáng và
biến ếm ếm từ 5 về 0 trong khi ó èn ỏ bên còn lại sáng và biến ếm ếm từ 20 về 0.
Sau khi s chuyển lên trạng thái 1 thì en giao thông chuyển sang chế èn vàng
nhấp nháy.
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIN
lOMoARcPSD|37054152
5.1 Kết lun
Sau hơn 4 tuần m hiểu thực hiện tài “Thiết kế thi công module iều khiển tín
hiệu èn giao thông”, nhóm ã ạt ược những kết quả như :
Đảm bảo hoạt ộng một cách chính xác, liên tục trong thời gian dài
Độ tin cậy cao
Đảm bảo làm việc ổn ịnh
Dễ quan sát cho người i ường
Chi phí nhỏ, tiết kiệm năng lượng
5.2 Hướng phát trin
Để hệ thống mang tính thực tiễn cao hơn, cần cải tiến hệ thống những hướng sau:
- Xây dựng các trạm xử trung tâm iều khiển ồng bộ các èn giao thông
ể giải quyết tốt hơn về vấn ề ùn tắc giao thông hiện nay.
- Ngoài ra, ý thức tham gia giao thông của người dân cần ược nâng cao
hiểu rõ hơn về luật an toàn giao thông cũng như chấp hành úng luật pháp Việt Nam.
TÀI LIU THAM KHO
[1] Reference: Course materials, Prof. Richard E. Haskell, năm 2006.
[2] Bộ ghép kênh MUX, link: https://mobitool.net/bo-ghep-kenh-mux.html
lOMoARcPSD|37054152
[3] Verilog căn bản: Bài 11: Finite State Machine - Thiết kế máy trạng thái, link:
https://vimach.net/threads/verilog-can-ban-bai-11-finite-state-machine-thiet-ke-
maytrang-thai.113/
[4] Đề Tài: Hệ thống iều khiển tín hiệu èn giao thông qua xử lý ảnh, năm 2020, link:
https://tailieumau.vn/de-tai-he-thong-dieu-khien-tin-hieu-den-giao-thong-qua-xu-
lyanh/
[5] Đồ án thiết kế và mô phỏng hệ thống iều khiển èn giao thông cho ngã tư - Luận văn,
ồ án, ề tài tốt nghiệp, link:
https://www.scribd.com/doc/226667112/%C4%90%E1%BB%93-An-
Thi%E1%BA%BFt-K%E1%BA%BF-Va-Mo-Ph%E1%BB%8Fng-H%E1%BB%87-
Th%E1%BB%91ng-%C4%90i%E1%BB%81u-Khi%E1%BB%83n-%C4%90en-
Giao-Thong-Cho-Nga-T%C6%B0-Lu%E1%BA%ADn-
V%C4%83n%C4%90%E1%BB%93-An-%C4%90%E1%BB%81-Tai-
T%E1%BB%91t-
Nghi%E1%BB%87p
[6] Đồ án: Tìm hiểu qui trình thiết kế chip & verilog, link:
https://tailieutuoi.com/tailieu/do-an-tim-hieu-qui-trinh-thiet-ke-chip-verilog
| 1/33

Preview text:

lOMoARcPSD| 37054152
B GIÁO D ỤC VÀ ĐÀO TẠ O
TRƯỜNG ĐẠ I H ỌC SƯ PHẠ M K THU T TP. H CHÍ MINH
KHOA ĐÀO ĐẠ O CH ẤT LƯỢ NG CAO
___________________________________ BÁO CÁO
THI T K H TH NG VÀ VI M CH TÍCH H P ĐỀ
TÀI : MODULE ĐIỀ U KHI ỂN ĐÈN GIAO THÔNG
GVHD: TS. ĐỖ DUY TÂN
MÃ HP: ICSD336764 - 02CLC
NHÓM SINH VIÊN TH C HI N: 1 . Di ệ p B ả o Ti ế 18119123 n 2. Nguy ễ n Phú Thi ệ n 20119043 3 . Nguy ễ n Hoàng Quân 20119272 4 . Ngô Qu ố c Thái 20119280
TP. H CHÍ MINH THÁNG 5/2022 lOMoARcPSD| 37054152 MỤC LỤC
CHƯƠNG 1: TỔNG QUAN ......................................................................................... 1
1.1 Đặt vấn ề ................................................................................................................... 1
1.2 Mục tiêu ề tài ............................................................................................................ 1
1.3 Nội dung nghiên cứu ............................................................................................... 2
1.4 Bố cục ........................................................................................................................ 2
1.5 Giới hạn .................................................................................................................... 3
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT ............................................................................ 4
2.1 Ngôn ngữ lập trình Verilog..................................................................................... 4
2.1.1 Giới thiệu về Verilog ....................................................................................... 4
2.1.1.1 Khái quát ................................................................................................... 4
2.1.1.2 Mục ích sử dụng Verilog HDL ................................................................. 4
2.1.2 Các kiểu dữ liệu trong Verilog ....................................................................... 5
2.1.2.1 Kiểu dữ liệu net ......................................................................................... 5
2.1.2.2 Kiểu dữ liệu Register ................................................................................. 5
2.1.2.3 Thông số .................................................................................................... 6
2.1.2.4 Số nguyên .................................................................................................. 6
2.1.2.5 Tập giá trị .................................................................................................. 6
2.1.3 Mô tả module .................................................................................................. 7
2.1.4 Toán tử và các phát biểu iều khiển ................................................................ 7
2.1.4.1 Toán tử ...................................................................................................... 7
2.1.4.2 Các cấu trúc iều khiển ............................................................................... 9
2.1.5 Phép gán........................................................................................................ 10
2.1.6 Mô hình structural và procedual ................................................................. 12
2.1.7 Mô hình một số thành phần logic cơ bản .................................................... 12
2.1.8 Tối ưu hóa mô hình ...................................................................................... 13
2.2 Quy trình thiết kế hệ thống .................................................................................. 13
2.2.1 Quy trình thiết kế một ASIC......................................................................... 14
2.2.1.1 Dải cổng .................................................................................................. 14
2.2.1.2 Cell chuẩn ................................................................................................ 15
2.2.2 Quy trình thiết kế dựa trên FPGA ............................................................... 16 lOMoARcPSD| 37054152
2.2.3 Công nghệ FPGA ......................................................................................... 17
2.2.3.1 Nguyên lý Antifuse ................................................................................. 17
2.2.3.2 Nguyên lý tế bào...................................................................................... 18
2.3.3.3 Nguyên lý UVEPROM và EEPROM...................................................... 18
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG ..................................................................... 19
3.1 Sơ ồ khối thiết kế ................................................................................................... 19
3.2 Các module ............................................................................................................. 19
3.2.1 Module chia xung ......................................................................................... 19
3.2.2 Module Mux 2 sang 1 ................................................................................... 20
3.2.3 Module chuyển từ số nhị phân sang số BCD .............................................. 21
3.2.4 Module led chớp tắt ...................................................................................... 23
3.2.5 Module máy trạng thái dành cho èn giao thông ......................................... 24
3.2.6 Module chính ................................................................................................ 25
3.2.7 Module test .................................................................................................... 27
CHƯƠNG 4: KẾT QUẢ ............................................................................................. 28
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ......................................... 28
5.1 Kết luận .................................................................................................................. 29
5.2 Hướng phát triển ................................................................................................... 29
TÀI LIỆU THAM KHẢO .......................................................................................... 29 lOMoARcPSD| 37054152
CHƯƠNG 1: TỔNG QUAN 1.1 Đặt vấn ề
Ngày nay cùng với sự phát triển của khoa học kỹ thuật, xã hội ngày càng văn
minh và hiện ại, sự phát triển ở ô thị ngày một i lên. Nhu cầu về giao thông ngày càng
trở nên cấp thiết, nhất là trong các khu vực thành thị.
Với cuộc sống hiện ại và sự phát triển nhanh chóng của nền kinh tế và lượng dân
cư ông úc. Ùn tắc giao thông gây thiệt hại không nhỏ cho sự phát triển kinh tế quốc gia,
giảm hiệu suất lao ộng và tăng các chi phí không cần thiết trong quá trình sản xuất. Trong
bối cảnh kinh tế lạm phát và khó khăn như hiện nay, lãng phí trong giao thông lại ặt
thêm một gánh nặng ối với ời sống kinh tế của người dân. Nguyên nhân của vấn ề này
một phần là do cơ sở hạ tầng chưa áp ứng ược nhu cầu lưu thông hiện nay, một phần là
do việc phân chia, ịnh thời gian của hệ thống èn giao thông hiện tại ở các giao lộ chưa
hợp lý khiến cho số lượng phương tiện giao thông bị ùn tắc theo thời gian rồi dẫn ến tắc
nghẽn giao thông. Qua thực trạng ó, nhóm muốn xây dựng một hệ thống iều thiết giao
thông tự ộng, phân luồng trực tiếp và hiệu quả hơn phần nào ó giảm bớt tình trạng ùn
tắc giao thông. Đồng thời tiêu tiếp cận, bổ sung các kiến thức mới cũng như củng cố lại
những kỹ năng kiến thức trong suốt quá trình học tập .
Tại Việt Nam số lượng xe máy trong những năm qua tăng một cách ột biến, mật
ộ xe lưu thông trên ường ngày một nhiều, trong khi ó hệ thống ường xá ở Việt Nam còn
quá nhiều hạn chế nên thường gây ra các hiện tượng như kẹt xe, ách tắc giao thông, ặc
biệt là tai nạn giao thông ngày càng phô biến trở thanh mối hiểm họa cho nhiều người.
Vì lý do ó các luật giao thông lần lượt ra ời và ược ưa vào sử dụng một cách lặng
lẽ rồi dần trở nên phố biến như hiện nay. Trong ó hệ thống èn giao thông là công cụ iều
khiến giao thông công cộng thực tế và hiệu quả có vai trò rất lớn trong việc ảm bảo an
toàn và giảm thiếu tai nạn giao thông.
1.2 Mục tiêu ề tài
Trước tình hình phương tiện tham gia giao thông ngày càng gia tăng không ngừng
và hệ thống giao thông nước ta ngày càng phức tạp. Dần ến tình trạng ùn tắc và tai nạn
giao thông ngày càng gia tăng. Xuất phát từ nhu cầu thực tế ó, chúng ta thiết nghĩ cần
các giải pháp ể giải quyết một phần nào ó về các nhu cầu thực tế trên. lOMoARcPSD| 37054152
" Hệ thống èn giao thông thông minh" là hết sức cần thiết, nó có thể có những
tính năng ược cài ặt sẵn ể giải quyết những sự cố kịp thời, tránh thời giờ lãng phí trong
khi giao thông bị ùn tắt tại các ngã tư.
Và ể ảm bảo giao thông ược an toan và thông suốt thì việc sử dụng các hệ thống
tín hiệu ế iều khiến và phân luồng tại các nút giao thông là rất cần thiết. Với tầm quan
trọng như vậy hệ thống iều khiến tín hiệu giao thông cần ảm bảo yêu cầu:
- Đảm bảo hoạt ộng một cách chính xác, liên tục trong thời gian dài - Độ tin cậy cao
- Đảm bảo làm việc ốn ịnh, lâu dài
- Dễ quan sát cho người i ường
- Chi phí nhỏ, tiết kiệm năng lượng
1.3 Nội dung nghiên cứu
Tìm hiểu và nguyên cứu các kiến thức ã học ở môn học thiết kế vi mạch và tích
hợp ể xây dựng module iều khiển èn giao thông dựa trên ngôn ngữ verilog
Công cụ thực hiện là phần mềm ISE Xilinx Design Suite. 1.4 Bố cục
Chương 1: Giới thiệu
Trình bày vấn ề dẫn nhập lý do chọn ề tài, mục tiêu, nội dung nghiên cứu, các giới
hạn thông số và các nội dung cơ bản có liên quan
Chương 2: Cơ sở lý thuyết
Tìm hiểu và ưa ra những cơ sở lý thuyết có liên quan ến ề tài ể dẫn chứng cho việc
thiết kế hệ thống module iều khiển àn giao thông
Chương 3: Thiết kế hệ thống
Thiết kế và tính toán ,phân tích, xây dựng sơ ồ khối, sơ ồ phần cứng, thiết kế
chương trình , giao diện mô phỏng quá trình thực hiện.
Xây dựng chương trình hoàn chỉnh cho toàn hệ thống, các hàm, các lưu ồ, các
chương trình ược sử dụng. Lắp ráp và chạy chương trình.
Viết tài liệu hướng dẫn sử dụng, quy trình thao tác. lOMoARcPSD| 37054152
Chương 4: Kết quả và ánh giá
Nêu các kết quả ạt ược khi thực hiện chương trình, phân tích, nhận xét, ánh giá kết quả thực thi ược
Chương 5: Kết luận và hướng phát triển Kết
luận và hướng phát triển.
Tóm tắt những kết quả ạt ược, những hạn chế và nêu lên các hướng phát triển trong tương lai. 1.5 Giới hạn
Trong quá trình thực hiện ề tài có thể không tránh ược các thiếu sót và mức ộ
hoàn thành ề tài, mong thầy xem xét và có thể ưa ra nhận xét ể chúng em có thể khắc
phục ược những thiếu sót ó và có thể hoàn thiện cũng như mở rộng ề tài sau này.
Vì một số iều khiện không cho phép nên chúng em chỉ thực hiện mô phỏng trên
phần mềm ISim và không có kit FPGA Xilinx Spartan-3E ể nạp code. Nên chúng em
xin thay thế tần số 1Hz bằng 1KHz ể dễ dàng cho việc mô phỏng hơn. lOMoARcPSD| 37054152
CHƯƠNG 2: CƠ SỞ LÝ THUYẾT
2.1 Ngôn ngữ lập trình Verilog
2.1.1 Giới thiệu về Verilog 2.1.1.1 Khái quát
Verilog là một trong hai ngôn ngữ mô tả phần cứng chính (gồm VHDL và Verilog
HDL) ược người thiết kế phần cứng sử dụng ể mô tả, thiết kế các hệ thống số, ví dụ như
máy tính hay linh kiện iện tử.
Verilog dễ học và dễ sử dụng hơn VHDL. Verilog ược chuẩn hoá theo chuẩn
IEEE vào năm 1995 và 2001. Verilog rất giống ngôn ngữ C và ược giới chuyên môn
nghiên cứu, sử dụng nhiều.
Verilog HDL có thể ược sử dụng ể thiết kế hệ thống số ở nhiều mức khác nhau, ví
dụ ở mức cao như các mô hình ặc trưng ến các mức thấp như mô hình bố trí dây, iện trở,
transistor trên một mạch tích hợp; mô tả các cổng logic, flip_flop trong hệ thống số; mô
tả thanh ghi và sự di chuyển dữ liệu giữa các thanh ghi (RTL - Register Transfer Level).
2.1.1.2 Mục ích sử dụng Verilog HDL
Hệ thống số là một hệ thống phức tạp bậc cao. Ở cấp ộ chi tiế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ết kế ở mức cổng không còn sử 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 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ột mức ộ mà giản ồ của cổng logic hầu như vô ích khi nó chỉ biểu
diễn một mạng lưới phức tạp các liên kết không theo chức năng của thiết kế.
Cách sử dụng cơ bản của Verilog HDL trong thiết kế mạch tích hợp là mô phỏng
thiết kế và tạo mẫu trên FPGA trước khi chuyển sang sản xuất. Mục tiêu của Verilog
không phải tạo ra những chip VLSI mà sử dụng Verilog ể mô tả 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 chươ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ốc ộ chậm và lãng phí diện tích hơn. Những thiết kế
mức thấp hơn trong Verilog ược thực hiện trên VLSI ể ạt ến tốc ộ cực ại và có diện tích
cực tiểu. Tuy nhiên sử dụng thiết kế dùng Verilog trên FPGA sẽ tiết kiệm chi phí và thời gian thiết kế. lOMoARcPSD| 37054152
2.1.2 Các kiểu dữ liệu trong Verilog Có 2 kiểu dữ liệu: - 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) ược khai báo mà không có tầm, theo mặc ịnh các ối tượng này rộng 1-bit và ược
tham chiếu ở dạng vô hướng. Nếu một tầm ược khai báo, ối tượng có nhiều bit và ược
gọi là vector. Một vector có thể ược tham chiếu trong trạng thái toàn bộ, một phần hoặc
từng bit riêng rẽ khi cần.
2.1.2.1 Kiểu dữ liệu Net
Các ối tượng dữ liệu net là khả năng tổng hợp, sẽ 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 kế và ược
dùng ể kết nối các cổng logic, các module. Các tín hiệu kiểu wire chỉ ược ọc, không ược
gán trong các hàm hoặc các block. Tín hiệu kiểu wire không lưu trử giá trị của nó và nó
phải ược gán giá trị bằng các lệnh gán ồng thời hoặc ược kết 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. Một cổng OR sẽ ược tổng hợp.
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 cổng AND sẽ ược tổng hợp.
2.1.2.2 Kiểu dữ liệu Register
Kiểu dữ liệu register lưu giữ giá trị từ một phát biểu 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ượng này lưu giữ 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 kiểu dữ liệu của register và không lOMoARcPSD| 37054152
hàm ý rảng một thanh ghi vật lý sẽ ược tổng hợp, mặc dù phép gán ược sử dụng cho mục ích này.
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 phát biểu if và case. Phép gán thủ tục lưu giữ giá trị trong một kiểu dữ liệu của
register và ược duy trì cho ến phép gán thủ tục kế tiếp cho kiểu dữ liệu của register. 2.1.2.3 Thông số
Một kiểu dữ liệu thông số sẽ ịnh nghĩa một hằng. Chỉ có các hằng thông số nguyên
(không thực ) ược sử dụng với phần mềm tổng hợp. 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à toà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 biệt Ví dụ:
Parameter A = 4’b 1011, B = 4’b 1000 ;
Parameter Stop = 0, Slow = 1, Medium = 2, Fast = 3; 2.1.2.4 Số nguyên
Các kiểu dữ liệu nguyên ược dùng ể khai báo các biến có công dụng tổng quát ể
sử dụng trong các vòng lặp, chúng không có ý ịnh phần cứng trực tiếp và lưu giữ giá trị
số. Không có tầm nào ược chỉ rõ khi một ối tượng nguyên ược khai báo. Đây là các số
nguyên có dấu và tạo ra các kết quả dạng bù 2. Ví dụ: integer N;
2.1.2.5 Tập giá trị
Các ối tượng dữ liệu wire và dữ liệu reg có thể có những giá trị sau : 0 logic 0 hoặc sai 1 logic 1 hoặc úng X
giá trị logic không xác ịnh Z
trạng thái tổng trở cao của cổng ba trạng thái
Biến reg ược gán giá trị ban ầu là X ở ầu chương trình. Biến wire không ượ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. lOMoARcPSD| 37054152 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 ường từ 0 – 3.
Vùng nhớ: Vùng nhớ ược ịnh nghĩa giống như vectơ của thanh ghi. Ví dụ một vùng
nhớ gồm 1024 từ, mỗi từ 16 bit 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ừ của vùng nhớ, muốn làm
iều này phải chuyển dữ liệu vào một thanh ghi trung gian. 2.1.3 Mô tả module
Định nghĩa module luôn luôn bắt ầu bằng từ khóa module. Tên module, danh
sách port, khai báo port, thông số (parameter) phải hiện diện trước tiên 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 tác với môi trường bên ngoài.
Năm thành phần trong module là: - 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
Các thành phần này có thể ở bất kỳ nơi nào trong module và không cần thứ tự.
Phát biểu endmodule là phát biểu sau cùng trong ịnh nghĩa module.
Mọi thành phần (ngoại trừ module, tên module và endmodule) là tùy chọn, có thể
trộn lẫn và tương thích theo yêu cầu thiết kế. Verilog cho phép nhiều module ược ịnh
nghĩa trong một tập tin duy nhất và không cần thứ tự.
2.1.4 Toán tử và các phát biểu iều khiển 2.1.4.1 Toán tử
Gồm các toán tử quan hệ so sánh 2 toán hạng và trả ra giá trị logic. Đúng là 1, sai là 0. lOMoAR cPSD| 37054152
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 toán tử iều kiện ! : ảo logic && : AND logic || : OR logic
Các toán tử set bit ~ : ảo bit & : AND | : OR ^ : XOR ~& : NAND ~| : NOR Các toá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
Ví dụ: dùng iều lệnh assign ể viết một module giải a hợp từ 2 ường sang
4 ường (bạn có thể tự viết giải a hợp từ 3 sang 8 hay 4 sang 16)
module demux(data, in1, in0, out0, out1, out2, out3); input data; input in0,in1; output out0,out1,out2,out3; assign out0= data&(~in1)&(~in0); assign out1= data&(~in1)&(in0); lOMoARcPSD| 37054152
assign out2= data&(in1)&(~in0);
assign out3= data&(in1)&(in0); endmodule
2.1.4.2 Các cấu trúc iều khiển
Verilog rất phong phú các câu lệnh iều khiển có thể sử dụng trong phần thủ tục.
Hầu hết chúng rất quen thuộc với những người lập trình bằng ngôn ngữ C. Điểm khác
biệt lớn nhất chính là thay dấu ngoặc {} trong ngôn ngữ C bằng từ khóa begin và end
trong Verilog HDL. Như ã nói ở trên, dấu ngoặc {,} 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
Ngoài ra còn có các vòng lặp for, while và repeat. Tuy nhiên chúng rất hiếm khi
sử dụng trong việc mô tả các module nên bài viết này sẽ không ề 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 ngõ Con là 1 thì
ngõ ra bằng ngõ vào, nếu Con là 0 thì ngõ ra sẽ ở trạng thái tổng trở cao.
module tristate(In, Con, Out); input In, Con; output Out; reg Out; always begin if (Con==1'b1) Out=In; else Out=1'bz; end lOMoARcPSD| 37054152 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 A_LT_B=1’b1; else A_LT_B=1’b0; end endmodule 2.1.5 Phép gán
Toán tử gán dùng ể gán kết quả trả về của 1 biểu thức(hàm logic).
Phép gán ồng thời: phép gán này chỉ dùng ể gán giá trị ở bên ngoài các block Syntax:
assign signal1 = signal2; ví dụ: assign a = b & c;
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 gán
non-blocking assignment " <= " và blocking assignment "=".
Blocking ược xem xét giống như phép gán trong ngôn ngữ C. Tín hiệu sẽ ược
gán giá trị ngay lập tức. và giá trị mới này sẽ ược sử dụng làm giá trị cho tín hiệu ó
cho lệnh tiếp theo phía dưới.
Non-Blocking ược xem xét giống như phép gán ồng thời các lệnh gán
nonblocking trong 1 block sẽ ược gán ồng thời sau khoản thời gian t sau khi các lệnh
trong block ươc thực hiện. Tín hiệu sẽ ược gán giá trị sau khoản thời gian t . Giá trị lOMoAR cPSD| 37054152
mới này sẽ không sử dụng làm giá trị cho tín hiệu ó, tín hiệu vẫn lấy giá trị cũ sử
dụng cho lệnh tiếp theo phía dưới. Giá trị mới sẽ ược sữ dụng cho lần thực hiện block tiếp theo. Ví dụ: Begin a = 2; b = a+1; a <= 3; c = a; end
Đề nghị sử dụng nonblocking assignment trong always block dùng ể mô tả hệ
tuần tự và sử dụng blocking assignment trong always block dùng ể mô tả hệ tổ hợp.
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ể ược sử dụng ể tổng hợp ra các bộ chốt (latch), các flipflop hoặc hệ tổ hợp.
Khối always ượ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óa or ). Syntax: always @(event_1 or event_2 or ...) begin:
name_for_block ... statements ... End
Đề nghị sử dụng always block ể mô tả thiết kế hệ tồ hợp như sau:
always @( tất cả các tín hiệu input của hệ tổ hợp ở trong list sự kiện mức logic) begin … end
Đề nghị sử dụng always block ể mô tả thiết kế hệ tuần tự như sau:
always @(posedge clk or negedge rst_) begin if (rst_ == 1'b0) { lOMoARcPSD| 37054152 … } else { … } end
2.1.6 Mô hình structural và procedual
Các phát biểu thủ tục trong Verilog ược sử dụng ể mô tả thiết kế ở mức trừu tượ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ế phức tạp.
Tuy nhiên với sự thay ổi nhỏ trong cách lập trình mô tả sẽ gây ra sự thay ổi lớn về mạch
phần cứng ược sinh ra. Các phát biểu thủ tục chỉ ược sử dụng bên trong các thủ tục (always, function …).
2.1.7 Mô hình một số thành phần logic cơ bản Input H ệ t ổ h ợ p Output
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ả sự phụ thuộc vào giá trị ngõ vào của ngõ ra. Trong verilog sữ dụng lệnh gán ồng thời.
Ví dụ: Mô tả bộ cộng bán phần A C B S Half Adder C = A and B; assign C = A & B; S = A or B; assign S = A ^ B; lOMoARcPSD| 37054152 A B S C 0 0 0 0 0 1 1 0 1 0 1 0 1 1 0 1
2.1.8 Tối ưu hóa mô hình
Miêu tả những tối ưu hóa mà có thể ượ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 bộ tối ưu
hóa tạo ra mã máy tối ưu hóa: code thì ược sắp xếp lại, dịch chuyển theo thứ tự, hơn
thế nữa giảm thời gian thực thi, tối ưu hóa cũng có thể thực thi bởi bộ tối ưu hóa logic.
Mạch logic ược tạo ra thì dễ dàng bị ảnh hưởng bởi cách một mô hình ược miêu tả.
Di chuyển một phát biểu từ một nơi này ến một nơi khác hoặc chia ra những diễn giải
có thể có ảnh hưởng sâu sắc lên cổng logic ược tạo ra, nó có thể tăng hoặc giảm số
lượng những cổng tổng 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. d. Giao hoán và kết hợp. 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.
2.2 Quy trình thiết kế hệ thống
Các con Chip hiện nay ang tồn tại ở trong hầu hết các vật dụng iện tử, nhận thấy vai
trò óng góp to lớn của Chip do ó trên thế giới ngành công nghiệp ể 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ẻ lOMoARcPSD| 37054152
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ỹ thuật phải có chất lượng cao.
2.2.1 Quy trình thiết kế một ASIC
Mạch tích hợp ứng dụng cụ thể ASIC là linh kiện ược sản xuất chưa hoàn chỉnh
(hay một phần) bởi nhà cung cấp ASIC ở dạng tổng quát. Quá trình chế tạo 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 toà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ẽ ược hoàn
tất khi người thiết kế chip có một thiết kế cụ thể và người này muốn thực hiện lên trên
ASIC. Nhà cung cấp ASIC thường có thể thực hiện iều này trong vài tuần và gọi ây là
thời gian làm thay ổi hoàn toàn.
Có hai loại linh kiện ASIC, ó là dải cổng (gate array) và cell chuẩn (standard cell). 2.2.1.1 Dải cổng
Đượ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 ượ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.
- Dải cổng không có kênh ượ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. Các dải cổng chứa từ
vài ngàn cổng tương ương (như cổng NAND 2 ngõ vào) ến vài trăm ngàn cổng tương
ương hoặc hơn nữa. Do không gian ịnh tuyến ( ể liên kết nối) bị giới hạn trên các dải
cổng có kênh, cho nên số lượng cổng này khó có thể ược sử dụng hết tổng số cổng có
sẵn (khoảng từ 70 ến 90%)
- 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 cứng ược ịnh nghĩa bởi nhà sản xuất dưới dạng các mẫu cell cơ lOMoARcPSD| 37054152
bản. Khi so sánh các macro mền ược ặc trưng hóa bởi người thiết kế, như việc chỉ ra ộ
rộng các bit trong mạch so sánh hai ngõ vào chẳng hạn. 2.2.1.2 Cell chuẩn
Mô hình luồng thiết kế ASIC
Các linh kiện cell chuẩn không có khái niệm về cell cơ bản và không có thành
phần nào ược sản xuất trước trên chip silicon. Nhà sản xuất tạ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 xuất chip, có nghĩa là silicon ược tận
dụng hiệu quả hơn nhiều so với 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ý.
Ngoài ra thư viện macro mền còn chứa nhiều mạch chức năng RAM mà ta không
thể thực hiện ược một cách có hiệu quả các linh kiện dải cổng; Mạch chức năng ROM
thường ược thực hiện hiệu quả hơn trong các mẫu cell cơ bản. lOMoARcPSD| 37054152
2.2.2 Quy trình thiết kế dựa trên FPGA
Dải cổng lập trình ược dạng trường là linh kiện ược sản xuất hoàn chỉnh nhưng vẫn
duy trì ược tính ộc lập với thiết kế. Mỗi nhà sản xuất FPGA ều ă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 và những khối này ược nối với nhau bằng các ma trận chuyển mạch lập trình
ược. Để cấu hình cho một linh 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ẽ.
Như vậy với các tính năng của ASIC và FPGA sẽ ược chọn lựa tùy vào giá thành
của sản phẩm. Tuy nhiên với FPGA, việc lập trình thường dễ dàng và 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 bố trí bo mạch in bằng
công cụ CAD ược tiến hành, trong khi thiết kế bên trong FPGA vẫn ang hoàn tất. Thủ
tục này cho phép ta kiểm tra sự tích hợp phần cứng và phần mền. Nếu việc kiểm tra hệ
thống thất bại, thiết kế này có thể ược sửa ổi và linh kiện khác FPGA ược lập trình ngay
lập tức với chi phí tương ối 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ại sẽ hoàn toàn dễ dàng với chi phí không áng kể.
Với những lý do trên, các thiết kế thường trước tiên hướng ến FPGA ể kiểm tra hệ
thống và có thời gian sản xuất nhỏ. Kế ến, thiết kế ược ịnh hướng lại ến một ASIC ể sản
xuất ở quy mô lớn hơn. Các thỏa hiệp thiết kế phải ược xem xét khi ịnh hướng lại từ
FPGA sang ASIC. Thí dụ như thời gian giữ dài có thể không bao giờ xuất hiện trong
ASIC do tốc ộ thực hiện chức năng ược cải tiến. lOMoARcPSD| 37054152
Mô hình luồng thiết kế FPGA
2.2.3 Công nghệ FPGA
2.2.3.1 Nguyên lý Antifuse Cấu trúc Antifuse: (a) Phần giao nhau (b) Hình vẽ ơn giản
(c) Antifuse hoạt ộng như 1 công tắc
Chú thích : Antifuse: cầu chì nghịch. lOMoARcPSD| 37054152 Difussion: khuyếch tán.
Lập trình bằng dòng iện. * Ưu khuyết iểm: Kích thước nhỏ.
Quy trình chế tạo khác với công nghệ CMOS.
2.2.3.2 Nguyên lý tế bào
Cấu trúc tế bào Sram:
Cấu trúc tế bào SRAM (hãng Xilinx) * Ưu khuyết iểm:
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 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ước lớn hơn antifuse
2.3.3.3 Nguyên lý UVEPROM và EEPROM
Nguyên lý hoạt ộng Transistor EPROM:
Cấu trúc transistor EPROM (hãng Xilinx) * Ưu khuyết iểm:
Tái lập trình không cần bộ nhớ ngoài. Diện tích nhỏ.
Không tái cấu hình trực tiếp trên mạch. lOMoARcPSD| 37054152
CHƯƠNG 3: THIẾT KẾ HỆ THỐNG
3.1 Sơ ồ khối thiết kế 3.2 Các module 3.2.1 Module chia xung
FPGA prototype kit cung cấp mạch dao ộng tần số cao (từ 50Mhz ến 100MHz).
Trong một số ứng dụng cần tần số thấp hơn, ví dụ mạch ếm, mạch ghi dịch, hoặc iều
khiển ngoại vi cần các xung clock có tần số khác nhau và thấp hơn ể có thể quan sát ược.
Module chia xung ược thiết kế nhằm tạo ra một hoặc nhiều ngõ ra xung clock có tần số thấp hơn. lOMoARcPSD| 37054152
Mạch chia xung có thể ược thiết kế bằng nhiều cách khác nhau, trong ó, có thể
sử dụng mạch ếm nhị phân n-bit ể thiết kế mạch chia xung.
Module chia xung này lấy tần số 50Mhz từ kit FPGA ể ưa vào ngõ vào và tại ngõ
ra nó sẽ cho ra tần số là 1 KHz.
3.2.2 Module Mux 2 sang 1
Bộ ghép kênh , ược viết tắt là “MUX” hoặc “MPX”, là một mạch logic tổ hợp
ược thiết kế ể chuyển một trong số các ường ầu vào sang một ường ầu ra chung duy nhất
bằng cách áp dụng tín hiệu iều khiển. Bộ ghép kênh hoạt ộng giống như công tắc xoay
nhiều vị trí hoạt ộng rất nhanh kết nối hoặc iều khiển nhiều ường ầu vào ược gọi là
“kênh” tại một thời iểm ến ầu ra.
Mạch ghép kênh hai sang một có một ngõ iều khiển là s nên chúng tạo ra hai trạng
thái logic. Mỗi trạng thái tại một thời iểm sẽ cho phép một ngõ và in nào ó ể truyền ến ngõ ra out. lOMoARcPSD| 37054152
3.2.3 Module chuyển từ số nhị phân sang số BCD lOMoARcPSD| 37054152
Giải thuật chuyển ổi từ nhị phân sang BCD
• Dịch số nhị phân sang trái 1 bit.
• Nếu số nhị phân trong nhóm số BCD nào hơn hơn 5 thì cộng nó với 3. • Lặp lại quá trình. lOMoARcPSD| 37054152
3.2.4 Module led chớp tắt
Tạo ra èn vàng chớp tắt. lOMoARcPSD| 37054152
3.2.5 Module máy trạng thái dành cho èn giao thông
Máy trạng thái ược sử dụng ể thiết kế các hệ thống số mà trong ó trạng thái của
hệ thống có thể chuyển ổi giữa nhiều trạng thái ược ịnh nghĩa trước. Mô hình máy trạng
thái là một mạch tuần tự ồng bộ, trong ó ngõ ra có thể phụ thuộc vào ngõ vào (mô hình lOMoARcPSD| 37054152
Mealy) hoặc ngõ ra chỉ phụ thuộc vào các trạng thái bên trong của hệ thống (Mô hình Moore).
Ở module này ta có bốn trạng thái:
• Trạng thái 1: Ta có biến ếm count = 15, và èn X1 và D2 sẽ ở mức 1 còn các èn lại thì ở mức 0.
• Trạng thái 2: Ta có biến ếm count = 5, và èn V1 và D2 sẽ ở mức 1 còn các èn lại thì ở mức 0.
• Trạng thái 3: Ta có biến ếm count = 15, và èn D1 và X2 sẽ ở mức 1 còn các èn lại thì ở mức 0.
• Trạng thái 4: Ta có biến ếm count = 5, và èn D1 và V2 sẽ ở mức 1 còn các èn lại thì ở mức 0.
Sau khi kết thúc trạng thái thứ 4 thì nó sẽ quay lại trạng thái thứ 1. 3.2.6 Module chính
Ban ầu tao khởi tao các ngõ vào cho clk, rs ,s và các ngõ ra X1, V1, D1, X2, V2, D2 lOMoARcPSD| 37054152
(biểu thị cho èn giao thông xanh ỏ vàng), ONES, TENS, HUNDREDS, ONES0,
TENS0, HUNDREDS0 (biểu thị cho số hiển thị hàng ơn vị, hàng chục, hàng trăm ).
Ta tiếp tục khởi tạo q[5:0], q1[5:0], q2[5:0], q3[5:0] , clko, counter1[7:0],
counter2[7:0] và khai báo chúng ở kiểu dữ liệu wire.
Chức năng các module ược gọi trong chương trình chính:
• Module traficlight: Tạo ra tín hiệu èn giao thông và các biến ếm
• Module HEX2BCD: Module này chuyển các biến ếm ra số hàng ơn vị, hàng
chục, hàng trăm ể có thể hiện thị trên LCD.
• Module xung: Tạo ra xung 1KHz cho module ledchoptat.
• Module ledchoptat: Tạo ra èn vàng chớp tắt.
• Module mux2_1: với s = 0 thì èn giao thông sẽ hoạt ộng bình thường khi s =
1 lên mức 1 thì èn sẽ chuyển sang dạng èn vàng chớp tắt. lOMoARcPSD| 37054152 3.2.7 Module test
Tạo một xung clk bằng khối always, ưa rs lên 1 ể èn giao thông bắt ầu hoạt ộng
và sau #90000000 ưa s lên 1 ể thực hiện chế ộ èn vàng nhấp nháy. lOMoARcPSD| 37054152
CHƯƠNG 4: KẾT QUẢ
Đèn xanh sáng và biến ếm ếm từ 15 về 0 rồi tắt chuyển sang èn vàng sáng và
biến ếm ếm từ 5 về 0 trong khi ó èn ỏ bên còn lại sáng và biến ếm ếm từ 20 về 0.
Sau khi s chuyển lên trạng thái 1 thì en giao thông chuyển sang chế ộ èn vàng nhấp nháy.
CHƯƠNG 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN lOMoARcPSD| 37054152 5.1 Kết luận
Sau hơn 4 tuần tìm hiểu và thực hiện ề tài “Thiết kế thi công module iều khiển tín
hiệu èn giao thông”, nhóm ã ạt ược những kết quả như :
• Đảm bảo hoạt ộng một cách chính xác, liên tục trong thời gian dài • Độ tin cậy cao
• Đảm bảo làm việc ổn ịnh
• Dễ quan sát cho người i ường
• Chi phí nhỏ, tiết kiệm năng lượng
5.2 Hướng phát triển
Để hệ thống mang tính thực tiễn cao hơn, cần cải tiến hệ thống những hướng sau: -
Xây dựng các trạm xử lý trung tâm ể iều khiển ồng bộ các èn giao thông
ể giải quyết tốt hơn về vấn ề ùn tắc giao thông hiện nay. -
Ngoài ra, ý thức tham gia giao thông của người dân cần ược nâng cao ể
hiểu rõ hơn về luật an toàn giao thông cũng như chấp hành úng luật pháp Việt Nam.
TÀI LIỆU THAM KHẢO
[1] Reference: Course materials, Prof. Richard E. Haskell, năm 2006.
[2] Bộ ghép kênh MUX, link: https://mobitool.net/bo-ghep-kenh-mux.html lOMoARcPSD| 37054152
[3] Verilog căn bản: Bài 11: Finite State Machine - Thiết kế máy trạng thái, link:
https://vimach.net/threads/verilog-can-ban-bai-11-finite-state-machine-thiet-ke- maytrang-thai.113/
[4] Đề Tài: Hệ thống iều khiển tín hiệu èn giao thông qua xử lý ảnh, năm 2020, link:
https://tailieumau.vn/de-tai-he-thong-dieu-khien-tin-hieu-den-giao-thong-qua-xu- lyanh/
[5] Đồ án thiết kế và mô phỏng hệ thống iều khiển èn giao thông cho ngã tư - Luận văn,
ồ án, ề tài tốt nghiệp, link:
https://www.scribd.com/doc/226667112/%C4%90%E1%BB%93-An-
Thi%E1%BA%BFt-K%E1%BA%BF-Va-Mo-Ph%E1%BB%8Fng-H%E1%BB%87-
Th%E1%BB%91ng-%C4%90i%E1%BB%81u-Khi%E1%BB%83n-%C4%90en-
Giao-Thong-Cho-Nga-T%C6%B0-Lu%E1%BA%ADn-
V%C4%83n%C4%90%E1%BB%93-An-%C4%90%E1%BB%81-Tai- T%E1%BB%91t- Nghi%E1%BB%87p
[6] Đồ án: Tìm hiểu qui trình thiết kế chip & verilog, link:
https://tailieutuoi.com/tailieu/do-an-tim-hieu-qui-trinh-thiet-ke-chip-verilog