Tải bản đầy đủ (.docx) (82 trang)

THIẾT kế MODULE INTERRUPT CONTROLLER TRONG KIẾN TRÚC AMBA BẰNG VERILOG (có code)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (761.22 KB, 82 trang )

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ MODULE INTERRUPT
CONTROLLER TRONG KIẾN TRÚC
AMBA BẰNG VERILOG

1


MỤC LỤC

2


DANH MỤC CÁC HÌNH VẼ

3


DANH MỤC CÁC BẢNG BIỂU

4


DANH MỤC CÁC TỪ VIẾT TẮT

ACE

AXI Coherency Extensions

AHB



Advanced High-performance Bus

AMBA

Advanced Microcontroller Bus Architecture

APB

Advanced Peripheral Bus

ARM

Advanced RISC Machine

ASIC

Application-Specific Integrated Circuits

AXI

Advanced eXtensible Interface

CPU

Central Processing Unit

FPGA

Field-programmable Gate Array


HDL

Hardware Description Language

INCTRL

Interrupt Controller

PDA

Personal Digital Assistant

RAM

Random Access Memory

ROM

Read-Only Memory

RTL

Register Transfer Level

SoC

System on Chip

5



ĐỒ ÁN TỐT NGHIỆP
Trang 6/76

CHƯƠNG 1.

GIỚI THIỆU ĐỀ TÀI

1.1 Đặt vấn đề
Ngày này, hơn 75% CPU nhúng 32-bit là thuộc họ ARM, điều này khiến ARM trở
thành cấu trúc 32-bit được sản xuất nhiều nhất trên thế giới. CPU ARM được tìm
thấy khắp nơi trong các sản phẩm thương mại điện tử, từ thiết bị cầm tay (PDA,
điện thoại di động, máy đa phương tiện, máy trò chơi cầm tay, và máy tính cầm tay)
cho đến các thiết bị ngoại vi máy tính (ổ đĩa cứng, bộ định tuyến để bàn).
ARM Advanced Microcontroller Bus Architecture (AMBA) là một tiêu chuẩn mở
(open-standard) cho phép kết nối và quản lý các khối chức năng trong các thiết kế
hệ thống trên một chip (SoC). Ngày nay, AMBA được sử dụng rộng rãi trên nhiều
bộ phận ASIC và SoC bao gồm các bộ xử lý ứng dụng được sử dụng trong các thiết
bị di động di động hiện đại như điện thoại thông minh.
Do đó, đề tài này sẽ thiết kế một khối module trong hệ thống SoC dựa theo kiến trúc
của ARM AMBA, khối module này đóng vai trò rất quan trọng trong hệ thống, đó là
Interrupt Controller.
1.2 Yêu cầu đề tài
Việc đầu tiên cần làm trong luận văn này là tìm hiểu cấu trúc bộ điều khiển ngắt
(Interrupt Controller) trong APB. Thế nào là Interrupt Controller? Vai trò của nó
giúp ít gì được cho hệ thống. Vị trí nằm ở đâu trong hệ thống đó. Và cách hoạt động
của module Interrupt trong một hệ thống. Ta cũng sẽ phải tìm hiểu về chuẩn giao
thức APB hoạt động như thế nào, interface bao gồm những cổng nào, có các tính
năng gì nổi bật và lợi ích khi sử dụng.

Sau đó, ta sẽ thực hiện viết code bằng ngôn ngữ lập trình Verilog để thiết kế module
Interrupt Controller có khả năng cung cấp trạng thái của nguồn ngắt, ngõ vào là gì,
ngõ ra là gì, có bao nhiêu ngõ. Trạng thái yêu cầu ngắt như sao, có bao nhiêu thanh

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 7/76

ghi, bao nhiêu trạng thái ngắt. Và điều khiển thanh ghi để quyết định 1 nguồn ngắt
tích cực nào đó có thể gửi yêu cầu ngắt đến CPU không.
Bước này vô cùng quan trọng trong việc thiết kế ra một module hay hệ thống nào
đó, chính là viết testbench để kiểm tra hoạt động của module. Kiểm tra xem module
có hoạt động đúng chức năng không. Có những ngõ vào, ngõ ra gì để kiểm tra. Liệt
kê có bao nhiêu trường hợp được kiểm tra trong testbench, có trường hợp đặc biệt
nào không.
Sau khi thiết kế xong, bước cuối cùng cần làm là đánh giá hoạt động của module
dựa vào xem mô phỏng dạng sóng, và đánh giá tài nguyên sử dụng, thống kê xem
có bao nhiêu cổng vào ra, khối thực thể, thanh ghi, cổng logic, flip-flop, dây nối,
dung lượng sử dụng.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP

Trang 8/76

1.3 Phương pháp
Bước đầu tiên cần làm trong luận văn này là tìm hiểu hoặc xem lại các kiến thức về
ngôn ngữ Verilog đã được học trước đó. Tìm hiểu xem các bước để thiết kế ra một
module là như thế nào, sử dụng thuật toán nào để thiết kế.
Tiếp theo là tìm hiểu về AMBA 3 APB protocol. Chuẩn giao thức này được sử dụng
khi nào, các tính năng và ưu điểm của nó. Chuẩn giao thức APB có các tín hiệu nào,
nêu rõ ý nghĩa và chức năng của từng tín hiệu. Cách thức truyền nhận của chuẩn
giao thức này diễn ra như thế nào, dữ liệu được truyền thông qua đâu, và hỗ trợ tối
đa bao nhiêu bit cho địa chỉ và dữ liệu. [5]
Để thiết kế một module Interrupt Controller, ta phải tìm hiểu vai trò và hoạt động
của module đó trong một hệ thống như thế nào. Quyết định bào nhiêu ngõ vào ra
cho module. Module sẽ xử lý ngắt dựa vào tín hiệu nào, và sẽ báo ngắt cho CPU
bằng cách nào. Tìm hiểu xem module xử lý bao nhiêu bit dữ liệu và có bao nhiêu
thanh ghi trong khối module.
Sau đó, ta sẽ tìm hiểu các module trước và sai Interrupt Controller là module nào.
Giả lập cho các khối hoạt động với nhau. Các khối module đó có thể bao gồm:
Interrupt Controller, Timer, Interrupt Controller, hệ thống Bus và CPU.
Sau khi tìm hiểu xong, việc tiếp theo là viết code Verilog cho từng module riêng
biệt bao gồm: Timer 0, Timer 1, Timer 2, Interrupt Controller, CPU, Bus, Wrapper.
Thể hiện vai trò, chức năng của từng module. Sau đó, kết nối các module lại với
nhau thông qua hệ thống bus được viết theo chuẩn giao thức APB.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP

Trang 9/76

Tiếp theo ta sẽ thiết kế Testbench bằng ngôn ngữ Verilog để kiểm tra hoạt động của
hệ thống. Testbench được viết ra để giả lập các trường hợp có thể xảy ra trong thiết
kế và kiểm tra các trường hợp đó có hoạt động đúng không. Sau khi viết testbench
xong, ta sẽ biên soạn và mô phỏng module được thiết kế bằng các phần mêm mô
phỏng. Một trong những mô phỏng phổ biết nhất đó là mô phỏng dạng sóng.
Kiểm tra dạng sóng (waveform) để xác định hệ thống hoạt động đúng hay không.
Thống kê tài nguyên sử dụng của hệ thống, so sánh với yêu cầu ban đầu để đánh
giá.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 10/76

CHƯƠNG 2.

CÁC VẤN ĐỀ LÝ THUYẾT LIÊN QUAN

1.4 Tổng quan về ngôn ngữ Verilog
1.1.1 Giới thiệu
Verilog là ngôn ngữ mô tả phần cứng (Hardware Description Language)được sử
dụng trong việc thiết kế các các hệ thống số, các mạch tích hợp: như bộ nhớ RAM,
bộ vi xử lý hoặc đơn giản là D-FlipFlop... Cùng với ngôn ngữ VHDL, Verilog là
một trong hai ngôn ngữ mô tả phần cứng phổ biến nhất hiện nay [1].
Verilog cũng có các đặc điểm như tính độc lập về công nghệ, dễ dàng trong thiết kế

và debug, cũng như tính đơn giản so với các thiết kế bằng sơ đồ khối (schematics),
đặc biệt là trong việc thiết kế các hệ thống phức tạp.
Verilog được dùng để xây dựng các ứng dụng trên nền các công nghệ như FPGA,
CPLDs…Code Verilog dùng để mô tả các hệ thống số được xây dựng trong các
thiết bị lập trình được của các hãng như Xilinx, Altera,...
1.1.2 Một số ưu điểm của ngôn ngữ Verilog
Nền tảng mạnh : chuẩn hóa năm 1995 bởi IEEE, hỗ trợ công nghiệp, phổ biến cho
các nhà ASIC vì dễ học, cho phép mô phỏng và tổng hợp hiệu quả.
Tính đa năng: cho phép quá trình thiết kế thực thể thực hiện trong môi trường thiết
kế cả phân tích và kiểm tra. Tuy nhiên Verilog không thích hợp lắm cho các thiết kế
mức hệ thống phức tạp, đây là trở ngại chính của Verilog.
Hỗ trợ công nghiệp: phổ biến cho các nhà thiết kế ASIC vì dễ học , cho phép mô
phỏng nhanh và tổng hợp hiệu quả.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 11/76

Có khả năng mở rộng IEEE Std 1364 chứa định nghĩa của PLI Verilog
(Programming Language Interface) cho phép mở rộng khả năng của Verilog. Nó là
một tập hợp các bộ định tuyến cho phép các chức năng bên ngoài truy nhập thông
tin chức năng thiết kế Verilog.
1.1.3 Thiết kế hệ thống số với Verilog
1.1.1.1 Qui trình thiết kế số

Trong thiết kế một hệ thống số sử dụng môi trường thiết kế tự động, qui trình thiết

kế bắt đầu bằng việc mô tả thiết kế tại nhiều mức độ trừu tượng khác nhau và kết
thúc bằng việc tạo ra danh sách các linh kiện cũng như các đường kết nối giữa các
linh kiện với nhau (netlist) cho một mạch tích hợp với ứng dụng cụ thể (ASIC),
mạch in (layout) cho một mạch tích hợp theo yêu cầu khách hàng (custom IC), hoặc
một chương trình cho một thiết bị logic có khả năng lập trình được (PLD) [1].
Hình 2-1 mô tả từng bước trong qui trình thiết kế này.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 12/76

Hình 2-1: Luồng thiết kế ASIC [1]
1.1.1.2 Dẫn nhập thiết kế

Bước đầu tiên trong thiết kế hệ thống số là bước dẫn nhập thiết kế. Trong bước này,
thiết kế được mô tả bằng Verilog theo phong cách phân cấp từ cao xuống thấp (topdown). Một thiết kế hoàn chỉnh có thể bao gồm những linh kiện ở mức cộng hoặc
mức transistor, những khối (module) phần cứng có chức năng phức tạp hơn được
mô tả ở mức độ hành vi, hoặc những linh kiện được liệt kê bởi cấu trúc bus.
Do những thiết kế Verilog ở mức cao thường được mô tả ở mức độ mà tại đó nó mô
tả hệ thống những thanh ghi và sự truyền dữ liệu giữa những thanh ghi này thông
qua hệ thống bus, việc mô tả hệ thống thiết kế ở mức độ này được xem như là mức
độ truyền dữ liệu giữa các thanh ghi (RTL). Một thiết kế hoàn chỉnh được mô tả
như vậy sẽ tạo ra được phần cứng tương ứng thực sự rõ ràng. Những cấu trúc thiết
kế Verilog ở mức độ RTL sử dụng những phát biểu qui trình (producedural
statements), phép gán liên tục (continuous assignments), và những phát biểu gọi sử
dụng khối (module) đã xây dựng sẵn.

Những phát biểu qui trình Verilog (procedural statements) được dùng để mô tả mức
độ hành vi ở mức cao. Một hệ thống hoặc một linh kiện được mô tả ở mức độ hành
vi thì tương tự vời việc mô tả trong ngôn ngữ phần mềm. Ví dụ, chúng ta có thể mô
tả một linh kiện bằng việc kiểm tra điều kiện ngõ vào của nó, bật cờ hiệu, chờ cho
đến khi có sự kiện nào đó xảy ra, quan sát những tín hiệu bắt tay và tạo ra ngõ ra.
Mô tả hệ thống một cách qui trình như vậy, cấu trúc if-else, case của Verilog cũng
như những ngôn ngữ phần mềm khác đều sử dụng như nhau.
Những phép gán liên tục (continuous assignment) trong Verilog là những phép gán
cho việc thể hiện chức năng những khối logic, những phép gán bus, và mô tả việc
kết nối giữa hệ thống bus và các chân ngõ vào và ngõ ra. Kết hợp với những hàm
Boolean và những biểu thức có điều kiện, những cấu trúc ngôn ngữ này có thể được
để mô tả những linh kiện và hệ thống theo những phép gán thanh ghi và bus của
chúng.
Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 13/76

Những phát biểu gọi sử dụng khối Verilog đã được thiết kế sẵn (instantiantion
statements) được dùng cho những linh kiện mức thấp trong một thiết kế ở mức độ
cao hơn. Thay vi mô tả ở mức độ hành vi, chức năng, hoặc bus của một hệ thống,
chúng ta có thể mô tả một hệ thống bằng Verilog bằng cách kết nối những linh kiện
ở mức độ thấp hơn. Những linh kiện này có thể nhỏ như là mức cổng hay transistor,
hoặc có thể lớn như là một bộ vi xử lí hoàn chỉnh.

Thiết kế Interrupt Controller


SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 14/76

1.1.1.3 Testbench trong Verilog

Một hệ thống được thiết kế dùng Verilog phải được mô phỏng và kiểm tra xem thiết
kế đã đúng chức năng chưa trước khi tạo ra phần cứng.
Trong quá trình chạy mô phỏng này, những lỗi thiết kế và sự không tương thích
giữa những linh kiện dùng trong thiết kế có thể được phát hiện. Chạy mô phỏng một
thiết kế đòi hỏi việc tạo ra một dữ liệu ngõ vào kiểm tra và quá trình quan sát kết
quả sau khi chạy mô phỏng, dữ liệu dùng để kiểm tra này được gọi là testbench.
Một testbench sử dụng cấu trúc mức cao của Verilog để tạo ra dữ liệu kiểm tra, quan
sát đáp ứng ngõ ra, và cả việc bắt tay giữa những tín hiệu trong thiết kế. Bên trong
testbench, hệ thống thiết kế cần chạy mô phỏng sẽ được gọi ra (instantiate) trong
testbench. Dữ liệu testbench cùng với hệ thống thiết kế sẽ tạo ra một mô hình mô
phỏng mà sẽ được sử dụng bởi một công cụ mô phỏng Verilog.
1.1.1.4 Đánh giá thiết kế

Một nhiêm vụ quan trọng trong bất kì thiết kế số nào cũng cần đó là đánh giá thiết
kế. Đánh giá thiết kế là quá trình mà người thiết kế sẽ kiểm tra thiết kế của họ có sai
sót nào có thể xảy ra trong suốt quá trình thiết kế hay không. Một sai sót thiết kế có
thể xảy ra do sự mô tả thiết kế mơ hồ, do sai sót của người thiết kế, hoặc sử dụng
không đúng những khối trong thiết kế.
Đánh giá thiết kế có thể thực hiện bằng mô phỏng, bằng việc chèn những kĩ thuật
kiểm tra, hoặc kiểm tra thông thường.

Thiết kế Interrupt Controller


SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 15/76

1.5 Tổng quan về AMBA 3 APB bus
1.1.4 Giới thiệu
APB là một phần trong chuẩn AMBA 3. Nó cung cấp một giao diện chi phí thấp
được tối ưu hóa cho tiêu thụ điện năng tối và giảm sự phức tạp.
APB giao tiếp với bất kỳ thiết bị ngoại vi nào có băng thông thấp và không yêu cầu
hiệu suất cao. APB có giao thức không được định tuyến.
Tất cả các tín hiệu chuyển tiếp chỉ liên quan đến cạnh lên của xung clock. Mỗi lần
chuyển tiếp phải mất ít nhất hai chu kỳ.
1.1.5 Mô tả tín hiệu
Bảng 2-1: Các tín hiệu trong APB

Tín hiệu
PCLK

Source
Clock source

Mô tả
Cạnh lên xung clock cho APB.

PRESETn
PADDR
PSEL


System bus equivalent
APB bridge
APB bridge

Tín hiệu reset của APB tích cực mức thấp.
Tín hiệu địa chỉ có thể lên đến 32 bits.
Chỉ ra slave nào được chọn và một

APB bridge

chuyển tiếp dữ liệu đang được yêu cầu.
Tín hiệu này chỉ ra chu kỳ thứ 2 và tiếp

PWRITE

APB bridge

theo của một quá trình chuyển tiếp APB.
Chỉ ra rằng có truy cập ghi nếu ở mức

PWDATA
PREADY

APB bridge
Slave interface

HIGH và truy cập đọc khi LOW.
Dữ liệu ghi. Có thế lên đền 32 bits.
Slave dùng tín hiệu này để mở rộng quá


Slave interface
Slave interface

trình chuyển tiếp APB.
Dữ liệu đọc. Có thể lên đến 32 bits.
Tín hiệu chỉ ra quá chuyển tiếp thất bại.

PENABLE

PRDATA
PSLVERR

1.1.6 Transfer
AMBA 3 APB có 3 dạng chuyển tiếp:
 Write transfers
 Read transfers
 Error respone.
1.1.1.5 Write transfers

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 16/76

Hai dạng của write transfer được diễn tả là:
o With no wait states

o With wait states.
1.1.1.1.1

With no wait states

Hình 2-2: Write transfer with no wait states [3]

Write transfer bắt đầu với address, write data, write signal và select signal, tất cả
thay đổi sau cạnh lên xung clock.
Xung clock đầu tiên của việc chuyển tiếp được gọi là Setup phase.
Xung clock tiếp theo tín hiệu cho phép được bật lên, PENABLE, và chỉ ra rằng
Access phase đang được diễn ra.
Địa chỉ, dữ liệu và tín hiệu điều khiển, tất cả vẫn có hiệu lực trong suốt quá trình
Access phase.
Tín hiệu cho phép, PENABLE, được bật xuống ở cuối quá trình chuyển tiếp.
1.1.1.1.2

With wait states

Hình 2-3 cho thấy cách mà tín hiệu PREADY từ slave có thể mở rộng quá trình
chuyển tiếp. Trong suốt Access phase, khi PENABLE cao, quá trình chuyển tiếp có
thể được mở rộng bằng cách điều khiển PREADY ở mức thấp. Các tín hiệu dưới
đây sẽ giữ nguyên không đổi đối với những chu kỳ cộng thêm:
o Address, PADDR
o Write signal, PWRITE

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân



ĐỒ ÁN TỐT NGHIỆP
Trang 17/76

o Select signal, PSEL
o Enable signal, PENABLE
o Write data, PWDATA.

Hình 2-3: Write transfer with wait states [3]

PREADY có thể lấy bất cứ giá trị nào khi PENABLE ở mức thấp.
1.1.1.6 Read transfers

Có 2 dạng của read transfer:
o With no wait states
o With wait states.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 18/76

1.1.1.1.3

With no wait states

Timing của tín hiệu địa chỉ, ghi, chọn và cho phép được diễn tả như trong Write

transfer. Slave phải cung cấp dữ liệu trước khi kết thúc read transfer.

Hình 2-4: Read transfer with no wait states [3]
1.1.1.1.4

With wait states

Hình 2-5 cho thấy cách mà tín hiệu PREADY từ slave có thể mở rộng quá trình
chuyển tiếp. Trong suốt Access phase, khi PENABLE cao, quá trình chuyển tiếp có
thể được mở rộng bằng cách điều khiển PREADY ở mức thấp.
Các tín hiệu dưới đây sẽ giữ nguyên không đổi đối với những chu kỳ cộng thêm:
o Address, PADDR
o Write signal, PWRITE
o Select signal, PSEL
o Enable signal, PENABLE.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 19/76

Hình 2-5: Read transfer with no wait states [3]
1.1.1.7 Error response

Ta có thể sử dụng PSLVERR để chỉ ra lỗi trên một quá trình chuyển tiếp APB. Lỗi
có thể xảy ra ở cả hai quá trình đọc và ghi.
PSLVERR chỉ được xem xét có giá trị trong suốt chu kỳ cuối của một quá trình

chuyển tiếp APB, khi PSEL, PENABLE, và PREADY đều ở mức cao.
1.1.1.1.5

Write transfer

Hình 2-6 cho thấy ví dụ của quá trình ghi thất bại và kết thúc với một error.

Hình 2-6: Ví dụ của quá trình ghi thất bại [3]
1.1.1.1.6

Read transfer

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 20/76

Quá trình đọc cũng có thể kết thúc với một phản hồi lỗi, điều đó chỉ ra rằng không
có giá trị dữ liệu đọc nào có sẵn.
Hình 2-7 cho thấy quá trình đọc kết thúc với một phản hồi lỗi.

Hình 2-7: Ví dụ của quá trình đọc thất bại [3]

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân



ĐỒ ÁN TỐT NGHIỆP
Trang 21/76

1.1.7 Trạng thái hoạt động
Hình 2-7 cho thấy hoạt động của APB.

Hình 2-8: Biểu đồ trạng thái [3]

Máy trạng thái hoạt động thông qua những trạng thái sau:
o IDLE:

Đây là trạng thái mặc định của APB.

o SETUP: Khi một quá trình chuyển tiếp được yêu cầu, hệ thống bus
chuyển sang trạng thái SETUP. Hệ thống bus chỉ giữ trạng thái
SETUP trong 1 chu kỳ và luôn chuyển qua trạng thái ACCESS ở cạnh
lên xung clock tiếp theo.
o ACCESS: Tín hiệu cho phép, PENABLE, được bật lên ở trạng thái
ACCESS. Tín hiệu địa chỉ, ghi, chọn phải giữ nguyên trong suốt quá
trình chuyển đổi từ trạng thái SETUP đến trạng thái ACCESS.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 22/76


CHƯƠNG 3.

THIẾT KẾ HỆ THỐNG INTERRUPT CONTROLLER

1.6 Giới thiệu về cấu trúc SoC cơ bản

Hình 3-1: Cấu trúc SoC cơ bản

Trong một hệ thống cơ bản SoC gồm có các bộ phận sau:
o CPU: Bộ vi xử lý chính, điều khiển toàn bộ hoạt động của hệ thống.
o Hệ thống BUS (bus system): Là cầu nối phục vụ cho mục đích truy
xuất dữ liệu đến một thành phần trong hệ thống.
o Interrupt Controller: Điều khiển ngắt cho hệ thống. Đối với một số
kiến trúc ARM CPU, INCTRL là một thành phần gắn liền (đi kèm với
CPU).
o RAM controller: Điều khiển bộ nhớ ngoài của chip.
o Các module thông dụng như Timer, WatchDog, DMAC,...
o Ngoài ra, trong SoC không thể thiếu các module xử lý chính phục vụ
cho một mục đích cụ thể nào đó. Ví dụ SoC xử lý về âm thanh, hình
ảnh, sẽ có những module được thiết kế tương ứng để phục vụ cho việc
xử lý âm thanh và hình ảnh riêng biệt [2].

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 23/76


1.7 Giới thiệu về Interrupt Controller trong SoC

Hình 3-2: Sơ đồ khối của hệ thống

Trong một hệ thống, CPU dĩ nhiên không thể thực thi nhiều hơn một lệnh ở một
thời điểm nhưng CPU có thể ngưng tạm thời việc thực thi một chương trình để thực
thi một chương trình khác rồi sau đó quay trở về thực thi tiếp chương trình đang bị
tạm ngưng.
Do đó, vai trò của module Interrupt Controller trong một hệ thống là vô cùng quan
trọng. Nó đảm nhận nhiệm vụ ngắt, cho phép hệ thống đáp ứng một sự kiện theo
cách không đồng bộ và xử lý sự kiện trong khi một chương trình khác đang thực thi.
1.8 Nguyên lý hoạt động

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 24/76

Hình 3-3: Nguyên lý hoạt động của hệ thống

Nguyên lý hoạt động của hệ thống được thực hiện theo các bước sau:
1) Ta sẽ cho 3 module TIMER đếm theo xung clock, mỗi xung clock đếm một
lần. Sau khi đếm tới số lần nhất định, các module TIMER sẽ đưa ra tín hiệu
báo cho module INCTRL (interrupt controller) biết yêu cầu ngắt.
2) Khi nhận được tín hiệu từ các TIMER, module INCTRL sẽ xử lý và chọn ra
module TIMER phù hợp dựa theo priority được quy định. Sau khi xử lý
xong, INCTRL sẽ bật tín hiệu “irq” báo cho CPU biết.

3) Khi nhận được tín hiệu từ INCTRL, CPU sẽ thực hiện thao tác đọc lại từ
INCTRL để kiểm tra xem thiết bị nào cần được ngắt.
4) CPU sẽ thực hiện lệnh ghi đến module đang yêu cầu ngắt. Sau đó, CPU sẽ
tiếp tục kiểm tra và clear các module khác cho đến khi tín hiệu “irq” được
bật xuống.
Tất cả quá trình truyền nhận dữ liệu sẽ thông qua hệ thống APB bus.

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


ĐỒ ÁN TỐT NGHIỆP
Trang 25/76

1.9 Interrupt Controller
1.1.8 Sơ đồ khối

Hình 3-4: Sơ đồ khối của hệ thống Interrupt Controller

1.1.9 Mô tả các ngõ vào ra, thanh ghi
Các ngõ vào:
o pclk:
Tín hiệu xung clock.
o presetn:
Tín hiệu reset.
o psel:
Tín hiệu select, báo hiệu bắt đầu một transaction.
o penable:
Tín hiệu enable, cho phép truyền nhận dữ liệu.

o pwrite:
Tín hiệu cho biết CPU muốn đọc hoặc ghi.
o paddr:
Địa chỉ thanh ghi mà CPU muốn truy cập vào.
o pwdata:
Dữ liệu ghi.
o int_0:
Tín hiệu báo ngắt từ Timer_0.
o int_1:
Tín hiệu báo ngắt từ Timer_1.
o int_2:
Tín hiệu báo ngắt từ Timer_2. [4]

Thiết kế Interrupt Controller

SVTH: Nguyễn Hải Tân


×