ĐỀ TÀI: Thiết kế hệ vi xử lý nhúng trên nền tảng công
nghệ FPGA
Tác giả: Dương Bá Dũng. Ra đa K42
Hoàng Thị Yến. ĐTYS K44
Học viện Kỹ thuật Quân sự
1
Mở đầu
Ngày nay, chúng ta đang sống trong kỷ nguyên của khoa học và công nghệ ,càng
ngày càng có những đột phá về khoa học và công nghệ mới. Đất nước ta đang trong thời kỳ
đổi mới, công nghiệp hoá, hiện đại hoá, với xu thế hội nhập kinh tế quốc tế.
Ngành Điện tử - Viễn Thông Việt Nam, một trong những ngành có vai trò quan
trọng trong kết cấu hạ tầng cơ sở của nền kinh tế quốc dân cũng đang có sự đóng góp lớn
lao cho sự lớn mạnh của nền kinh tế, ổn định chính trị và an ninh quốc phòng nước nhà.
Công nghệ Điện tử nói chung và công nghệ FPGA nói riêng ngày càng lớn mạnh ở Việt
Nam chúng ta. Hầu hết những thiết bị phức tạp đều giải quyết nhiệm vụ trên cơ sở Hệ vi
xử lý. Bên cạnh đó,tính linh động cao trong quá trình thiết kế cho phép FPGA giải quyết
những bài toán phức tạp mà trước kia chỉ thực hiện nhờ phần mềm máy tính. Ngoài ra, nhờ
mật độ cổng logic cao, FPGA được ứng dụng cho những bài toán đòi hỏi khối lượng tính
toán lớn. Những ứng dụng trong thực tế của FPGA rất rộng rãi, bao gồm: Các hệ thống
hàng không, vũ trụ, quốc phòng, tiền thiết kế mẫu ASIC (ASIC prototyping), các hệ thống
điều khiển trực quan, phân tích nhận dạng ảnh, nhận dạng tiếng nói, mật mã học, mô hình
phần cứng máy tính... Đặc biệt, với khả năng tái lập trình, người sử dụng có thể thay đổi lại
thiết kế của mình chỉ trong vài giờ…
Nhờ những đặc điểm mạnh mẽ và ứng dụng thực tiễn của FPGA cùng với vai trò
giải quyết bài toán của Vi xử lý,chúng em đã chọn đề tài “Thiết kế hệ Vi Xử Lý nhúng
chuyên năng trên nền tảng công nghệ FPGA”. Đề tài được viết bằng ngôn ngữ VHDL
Chúng em xin chân thành cảm ơn thầy giáo Đỗ Xuân Tiến,thầy giáo Trịnh Quang
Kiên đã tận tình hướng dẫn, giúp đỡ chúng em để có thể hoàn thành đề tài.
Trong thời gian ngắn,đề tài nghiên cứu chưa được sâu,kính mong các thầy cô cùng
các bạn góp ý kiến để Đề tài tiếp tục hoàn thiện và phát triển.
2
hành hoạt động của hệ vi xử lí. Nó còn được gọi là chương trình monitor. ROM
còn được sử dụng để chứa các bảng biểu và các tham số của hệ thống. Chương
trình trong ROM phải được chuẩn bị trước khi cho hệ thống hoạt động. Thành
phần thứ hai của bộ nhớ trung tâm là bộ nhớ đọc/ghi RAM được dùng làm môi
trường lưu trữ kết quả trung gian, kết quả cuối của của xử lí thông tin. Nó cũng
được sử dụng để làm vùng đệm dữ liệu cho các thao tác thu phát chuyển đổi số
liệu.
I/O là cổng vào ra, có nhiệm vụ giao tiếp giữa hệ vi xử lí và thế giới bên
ngoài. Thực hiện truyền dữ liệu số nhị phân đã được xử lí từ bên trong hệ thống ra
4
bên ngoài và thực hiện truyền ngược lại tín hiệu nhị phân từ bên ngoài vào bên
trong hệ vi xử lí để thực hiện tín toán và xử lí tín hiệu. Có hai loại cổng vào ra:
cổng vào ta nối tiếp và cổng vào ra song song. Ngoài ra trong hệ vi xử lí còn có
bàn điều khiển, hiển thị thực hiện điều khiển hệ thống và hiển thị kết quả điều
khiển và trạng thái hoạt động của hệ vi xử lí. Các bộ biến đổi tương tự - số (ADC)
và bộ biến đổi số - tương tự (DAC) thực hiện chuyển đổi tín hiệu tương tự sang tín
hiệu số nhị phân và ngược lai
Hệ thống trong hệ vi xử thực hiện kết nối liên lạc các bộ phận trong hệ
thống với nhau. Hệ thống gồm 3 thành phần chính:
Thành phần thứ nhất là địa chỉ là thành phần một chiều bộ vi xử lí dùng nay
để điều khiển các thành phần có trong bằng cách gán cho mỗi thành phần một địa
chỉ xác định.
Thành phần thứ hai là kênh dữ liệu. Đây là kênh dữ liệu hai chiều thực hiện
trao đổi thông tin giữa đơn vị xử lí trung tâm và các thành phần có trong hệ thống.
Thành phần thứ ba là kênh điều khiển. Là tập hợp các tín hiệu điều khiển để
tạo liên lạc giữa đơn vị xử lí trung tâm và các thành phần có trong hệ nhằm đồng
bộ hóa mọi chế độ và mọi thao tác của hệ thống.
Hệ vi xử lý được sử dụng rộng rãi trong cuộc sống, với các ứng dụng như:
Xử lý ảnh, xử lý tín hiệu, thông tin di động, thiết bị y tế... Tính chuyên dụng của
các ứng dụng được thể hiện một cách rõ nét khi mà các hệ vi xử lý ra đời phục vụ
12 lcall 1011 - 1111 dddd dddd dddd
13 Jmp 1000 - 1000 dddd dddd dddd
14 SLL 0001 0000 RF[rn] <= RF[rn] sll RF[rm] 0001 0000 dddd rrrr
15 SLA 0001 0001 RF[rn] <= RF[rn] sla RF[rm] 0001 0001 dddd rrrr
16 SRL 0001 0010 RF[rn] <= RF[rn] srl RF[rm] 0001 0010 dddd rrrr
17 SRA 0001 0011 RF[rn] <= RF[rn] sra RF[rm] 0001 0011 dddd rrrr
18 NOTx 0010 0000 RF[rn] <= not RF[rm] 0010 0000 dddd rrrr
19 ANDx 0010 0001 RF[rn] <= RF[rn] and RF[rm] 0010 0001 dddd rrrr
20 NAND 0010 0010 RF[rn] <= RF[rn]nand RF[rm] 0010 0010 dddd 0000
21 OR 0010 0011 RF[rn] <= RF[rn] or RF[rm] 0010 0011 dddd rrrr
22 NOR 0011 0001 RF[rn] <= RF[rn] nor RF[rm] 0011 0000 dddd rrrr
23 XOR 0011 0010 RF[rn] <= RF[rn] xor RF[rm] 0011 0001 dddd rrrr
24 XNOR 0011 0011 RF[rn] <= RF[rn] nxor RF[rm] 0011 0011 dddd rrrr
25 SETB 0111 0000 I/O(A, b) ← 1 0111 0000 aaaa arrr
26 CLRB 0111 0001 I/O(A, b) ← 0 0111 0001 aaaa arrr
27 IN 0111 0010 Rd ← I/O(A) 0111 0010 dddd iiii
6
28 OUT 0111 0011 I/O(A) ← Rr 0111 0011 uuuu rrrr
a. Các phương pháp định địa chỉ.
CPU có thể truy nhập dữ liệu theo nhiều cách khác nhau. Dữ liệu có thể ở
trong một thanh ghi, ở trong bộ nhớ hoặc được cho dưới dạng địa chỉ tức thời.
Cách CPU truy nhập dữ liệu được gọi là chế độ định địa chỉ. Trong tập lệnh trên
chúng ta đã xây dựng có 4 chế độ định địa chỉ cơ bản:
Chế độ định địa chỉ tức thời: Toán hạng nguồn là một hằng số.
Ví dụ: MOVRFi R1,4 ; // nhập giá trị 4 vào thanh ghi R1.
Chế độ định địa chỉ thanh ghi: Sử dụng thanh ghi để lưu dữ liệu cần thao tác.
Ví dụ: ADD R1,R2 ; // cộng giá trị thanh ghi R1 với thanh ghi R2 và
lưu kết quả vào thanh ghi R1.
Chế độ định địa chỉ trực tiếp: Định địa chỉ thanh trực tiếp có thể truy nhập
toàn bộ không gian bộ nhớ RAM của hệ vi xử lý.
Đối với lệnh rẽ nhánh: lệnh jmp là lệnh nhảy không điều kiện thực hiện nhảy tới
một địa chỉ lệnh trong bộ nhớ lệnh…
Mã máy của từng lệnh được thể hiện trong bảng 1.1 .
8
2. Tổ chức hệ vi xử lí.
a. Mô tả chân.
Hình 2.1 Mô tả chân của vi xử lí.
Hình 2.1 mô tả cấu hình chân cho bộ vi xử lí. Bộ vi xử lí có các cổng vào và cổng ra
được quy định rõ. Mỗi cổng có 8 chân tương ưng với 8 bit. Tín hiệu clk sẽ được đưa trực
tiếp vào trong hệ vi xử lí. Reset sẽ được đặt ở mức thấp.khi Reset được xác lập thì hệ vi xử
lí ở trạng thái mặc định khi chưa có xung clk.
9
a. Kiến trúc tổng quát.
Hình 2.1Kiến trúc tổng quát của CPU.
Hình 2.1 chỉ ra sơ đồ khối tổng quát của thiết kế, mỗi khối được đưa ra là một
modul cần được thiết kế. Trên sơ đồ có 13 khối, trong đó có những khối đơn giản (RF)và
những khối phức tạp (CU, ALU). Chúng ta phải hiểu các modul đó trước khi bắt tay vào
thiết kế từng modul cụ thể.
Thực hiện kết nối giữa các khối lại với nhau bằng các đường dữ liệu. Có hai loại
đường dữ liệu cơ bản là trực tiếp và chung. trực tiếp là các kết nối trực tiếp giữa hai
khối với nhau. Còn chung kết nối nhiều khối lại với nhau.
10
Chúng ta có thể phân chia hệ thống ra làm các đơn vị và các khối. Có hai đơn vị cơ
bản là đơn vị tham chiếu, và đơn vị thực hiện.
Đơn vị tham chiếu: Gồm có bộ đếm chương trình (PC), bộ nhớ chương trình
(ROM). Thanh ghi lệnh (IR).
Khối thứ nhất của đơn vị tham chiếu là bộ đếm chương trình (PC). PC chứa địa chỉ
của lệnh được thực hiện. Nó tham chiếu tới bộ nhớ chương trình (ROM) tới vị trí của lệnh.
Lệnh từ ROM sẽ được chốt vào trong thanh ghi lệnh (IR). Đơn vị điều khiển sẽ mang nội
dung của (IR) và giải mã nó. Đơn vị điều khiển xác lập tín hiệu điều khiển tương ứng thực
và tại thời điểm nào. Tín hiệu điều khiển được xác lâp bởi đơn vị điều khiển.
c. Đăc tính tín hiệu điều khiển.
Tín hiệu điều khiển được sử dụng để điều khiển phần dữ liệu (datapath). Chúng ta
sẽ tìm hiểu đặc tính của tín hiệu điều khiển trước khi thực hiện các công việc tiếp theo.
Thứ nhất một tín hiệu điều khiển có chiều dài nhỏ nhất một xung nhịp clk. Nó thường
được đặt lên sau một thời gian ngắn sau sườn lên của xung nhịp clk. Phần dữ liệu chứa một
và thanh ghi và các mạch tổ hợp giữa chúng vì vậy chúng ta có hai loại tín hiệu điều khiển
cơ bản: loại thứ nhất là điều khiển các mạch logic tổ hợp và loại thứ hai là điều khiển các
thanh ghi.
Khi một mạch logic tổ hợp bắt gặp một tín hiệu điều khiển, nó sẽ hoạt động hướng
tín hiệu qua ngay lập tức. Ví dụ ADD là tín hiệu điều khiển thực thi phép toán cộng, khi có
tín hiệu ADD ngay lập tức phép toán cộng được thực thi.ngay lập tức. Thời gian trễ của kết
12
quả đầu ra so với tín hiệu đầu vào là thời gia lan truyền tín hiệu qua mạch tổ hợp. Mạch
logic tổ hợp ở đây có thể là một đơn vị thực hiện chức năng giống như là bộ cộng, bộ
dịch…
Một tín hiệu điều khiển thanh ghi yêu cầu sườn lên của xung clk để điều khiển. Ví
dụ tín hiệu WR_REG có nhiệm vụ chốt dữ liệu vào thanh ghi đích của tập các thanh ghi
khi bắt gặp sườn lên của xung clk. Từ đó tín hiệu điều khiển được xác lâp tại một thời
điểm sau một thời gian ngắn sườn lên của xung clk. Hoạt động xảy ra ở phía cuối tín hiệu
điều khiển tại đây nó bắt gặp sường lên của xung clk. Tín hiệu điều khiển là tín hiệu cho
phép của các thanh ghi hoặc tín hiệu tăng giảm cho bộ đếm..
Hình 2. Giản đồ thời gian tín hiệu điều khiển.
Hình trên giải thích sinh động khái niệm. Cả hai tín hiệu điều khiển ADD và
WR_REG được xác lập và không được xác lập sau một sườn lên xung clock. Tín hiệu
ADD đưa ra tác động ngay lập tức sau khi nó được xác lập bởi kết quả đầu ra của bộ cộng.
Kết quả có được sau một thời gian trễ phụ thuộc vào tốc độ của bộ cộng. Tín hiệu
WR_REG chốt kết quả vào trong thanh ghi tại thời điểm kết thúc của tín hiệu khi bắt gặp
sườn lên xung clock. Kết quả thanh ghi thay đổi giá trị sau sườn lên xung clock một thời
gian ngắn.
của một từ ROM là 16 bit. Tổng kích thước của ROM là 256 bytes. Điều này có nghĩa là
ROM có thể lưu giữ được 256 lệnh tương ứng với 256 địa chỉ của ROM.
Bộ đếm chương trình cung cấp 8 bít địa chỉ thông qua trực tiếp tới ROM. Lệnh đầu
ra từ ROM sẽ gửi tới thanh ghi lệnh. Không có xung clock nào cần cho ROM. Nó có thể là
ảnh chiếu giống như một mạch logic tổ hợp. Tín hiệu đầu ra sẽ được thay đổi sau một thời
gian ngắn sau khi đầu vào thay đổi.
d. Thanh ghi lệnh(IR)
Thanh ghi lệnh (IR) được sử dụng để lưu giữ lệnh. Lệnh được nhận từ bộ nhớ
chương trình ROM thông qua 16 bit. IR sẽ chốt lệnh mới nếu tín hiệu EN được đặt lên.
Thanh ghi lệnh kết nối trực tiếp với đơn vị điều khiển để thực hiện giải mã. Địa chỉ của
thanh ghi đích và thanh ghi nguồn được gửi trược tiếp tới tập các thanh ghi đa năng.
16