1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

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

82 568 12

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 82
Dung lượng 849,75 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

CONTROLLER TRONG KIẾN TRÚC

AMBA BẰNG VERILOG

Trang 5

AHB Advanced High-performance Bus

AMBA Advanced Microcontroller Bus ArchitectureAPB 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

Trang 6

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ìmthấ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úccủ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 độngcủa module Interrupt trong một hệ thống Ta cũng sẽ phải tìm hiểu về chuẩn giaothức APB hoạt động như thế nào, interface bao gồm những cổng nào, có các tínhnăng gì nổi bật và lợi ích khi sử dụng

Trang 7

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ệtnà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 moduledự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

Trang 8

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ộtmodule 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ụngkhi 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ẩngiao 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 độngcủa module đó trong một hệ thống như thế nào Quyết định bào nhiêu ngõ vào racho module Module sẽ xử lý ngắt dựa vào tín hiệu nào, và sẽ báo ngắt cho CPUbằng cách nào Tìm hiểu xem module xử lý bao nhiêu bit dữ liệu và có bao nhiêuthanh 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êngbiệ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ớinhau thông qua hệ thống bus được viết theo chuẩn giao thức APB

Trang 9

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 testbenchxong, 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 để đánhgiá

Trang 10

CHƯƠNG 2 CÁC VẤN ĐỀ LÝ THUYẾT LIÊN QUAN

1.4 Tổng quan về ngôn ngữ Verilog

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ácthiế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 chocá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

Trang 11

(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ôngtin 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ếtthú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áclinh 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ặcmộ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

Trang 12

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 (top-down) Một thiết kế hoàn chỉnh có thể bao gồm những linh kiện ở mức cộng hoặcmứ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ôngqua 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 (produceduralstatements), 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ũngnhư 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

Trang 13

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

Trang 14

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íchgiữ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ộtthiế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ếtquả 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, quansá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 trongtestbench, hệ thống thiết kế cần chạy mô phỏng sẽ được gọi ra (instantiate) trongtestbench 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ó saisó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ụngkhô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ậtkiểm tra, hoặc kiểm tra thông thường

Trang 15

1.5 Tổng quan về AMBA 3 APB bus

Bảng 2-1: Các tín hiệu trong APB

Tín hiệu Source Mô tả

PCLK Clock source Cạnh lên xung clock cho APB

PRESETn System bus equivalent Tín hiệu reset của APB tích cực mức thấp

PADDR APB bridge Tín hiệu địa chỉ có thể lên đến 32 bits

PSEL APB bridge Chỉ ra slave nào được chọn và một

chuyển tiếp dữ liệu đang được yêu cầu

PENABLE APB bridge Tín hiệu này chỉ ra chu kỳ thứ 2 và tiếp

theo của một quá trình chuyển tiếp APB

PWRITE APB bridge Chỉ ra rằng có truy cập ghi nếu ở mức

HIGH và truy cập đọc khi LOW

PWDATA APB bridge Dữ liệu ghi Có thế lên đền 32 bits

PREADY Slave interface Slave dùng tín hiệu này để mở rộng quá

trình chuyển tiếp APB

PRDATA Slave interface Dữ liệu đọc Có thể lên đến 32 bits

PSLVERR Slave interface Tín hiệu chỉ ra quá chuyển tiếp thất bại

1.1.6 Transfer

AMBA 3 APB có 3 dạng chuyển tiếp:

 Write transfers

Trang 16

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ìnhchuyể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

Trang 17

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

Trang 18

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 Writetransfer 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ìnhchuyể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

Trang 19

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ìnhchuyể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

Trang 20

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]

Trang 21

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áiSETUP trong 1 chu kỳ và luôn chuyển qua trạng thái ACCESS ở cạnhlê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

Trang 22

CHƯƠNG 3 THIẾT KẾ HỆ THỐNG INTERRUPT CONTROLLER1.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ớiCPU)

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]

Trang 23

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ộtthờ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ựcthi 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 quantrọng Nó đảm nhận nhiệm vụ ngắt, cho phép hệ thống đáp ứng một sự kiện theocá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

Trang 24

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

Trang 25

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]

Trang 26

Các ngõ ra:

o prdata: Dữ liệu đọc

o pready: Tín hiệu này bật lên khi kết thúc một transaction

o pslverr: Tín hiệu báo lỗi cho transaction

o irq: Tín hiệu ngắt xuất ra để báo cho CPU [4]

• 3 Timer bật cùng lúc => chọn Timer_0 với ID “00”

• Timer_1 và Timer_2 bật => chọn Timer_1 với ID “01”

Module Interrupt Controller (INCTRL) sẽ nhận tín hiệu ngắt từ các Timer

Sau đó, INCTRL sẽ xử lý và chọn ra Timer phù hợp và gắn ID của Timer đó vào thanh ghi “id_int”

Đồng thời, INCTRL sẽ bật tín hiệu “irq” báo cho CPU có thiết bị cần được ngắt.CPU sẽ đọc từ thanh ghi “id_int” để nhận biết và ngắt Timer tương ứng

Ngoài thanh ghi “id_int”, INCTRL còn có thanh ghi “status” chỉ ra trạng thái có baonhiêu thiết bị yêu cầu ngắt

1.1.11 Phương pháp thiết kế

Module được thiết kế bằng ngôn ngữ Verilog

Module được viết dựa theo chuẩn giao thức AMBA APB giúp cho việc truyền nhận

Trang 27

Hình 3-5: Sơ đồ khối của module Timer_0

Hình 3-6: Sơ đồ khối của module Timer_1

Trang 28

Hình 3-7: Sơ đồ khối của module Timer_2

1.1.13 Mô tả các ngõ vào ra

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

Các ngõ ra:

o prdata: Dữ liệu đọc

o pready: Tín hiệu này bật lên khi kết thúc một transaction

o pslverr: Tín hiệu báo lỗi cho transaction

o int_0: Tín hiệu ngắt xuất ra để báo cho INCTRL

Các thanh ghi:

o clear_register_0: CPU ghi vào thanh ghi này để clear tín hiệu ngắt

Trang 29

Module được viết dựa theo chuẩn giao thức AMBA APB giúp cho việc truyền nhận

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

1.1.17 Mô tả các ngõ vào ra, thanh ghi

Các ngõ ra:

o pclk: Tín hiệu xung clock

o presetn: Tín hiệu reset

o prdata: Dữ liệu đọc

o pready: Tín hiệu này bật lên khi kết thúc một transaction

o pslverr: Tín hiệu báo lỗi cho transaction

o irq: Tín hiệu ngắt CPU nhận từ INCTRL

Các ngõ vào:

o psel: CPU gửi tín hiệu này để bắt đầu một transaction

o penable: Tín hiệu enable, cho phép truyền nhận dữ liệu

Trang 30

Module INCTRL sẽ bật tín hiệu “irq” báo cho CPU biết có Timer cần ngắt.

Sau khi nhận được tín hiệu yêu cầu ngắt, CPU sẽ thực hiện lệnh đọc ngược lại thanhghi “id_int” của module INCTRL để xem Timer nào cần ngắt trước

Sau khi có dữ liệu, CPU ghi vào thanh ghi nội “id_int”

Từ đó, dữ liệu này sẽ thông qua khối Combinational Logic để xử lý và thực hiện lệnh ghi xuống Timer để ngắt Timer đó

1.1.19 Phương pháp thiết kế

Module được thiết kế bằng ngôn ngữ Verilog

Module được viết dựa theo chuẩn giao thức AMBA APB giúp cho việc truyền nhận

Trang 31

CHƯƠNG 4 KẾT QUẢ MÔ PHỎNG

1.12 Mô phỏng hoạt động của hệ thống

1.1.20 Trường hợp có 1 timer yêu cầu ngắt

Hình 4-1: Hoạt động của hệ thống khi 1 timer bật

Ban đầu ta sẽ cho các input như sau:

Trang 32

Hình 4-2: Hoạt động giữa CPU và INCTRL khi 1 timer bật

3) Khi nhận được tín hiệu ngắt, CPU sẽ thực hiện lệnh đọc vào thanh ghi

Trang 33

CPU biết rằng không còn module nào cần ngắt nữa, kết thúc quá trình.

Kết quả:

Dựa theo mô phỏng, ta kết luận hệ thống đã hoạt động đúng

1.1.21 Trường hợp có 2 timer yêu cầu ngắt

Hình 4-3: Hoạt động của hệ thống 2 timer bật cùng lúc

Ban đầu ta sẽ cho các input như sau:

Output:

o Dựa theo mô phỏng thì ta kết luận hệ thống đã hoạt động đúng

Trang 34

Hình 4-4: Hoạt động giữa CPU và INCTRL 2 timer bật cùng lúc

3) Khi nhận được tín hiệu ngắt, CPU sẽ thực hiện lệnh đọc vào thanh ghi

“id_int” (8’h07) để kiểm tra xem module nào cần ngắt

Trang 35

(8’h06) để ngắt module timer_2.

6) Sau khi timer đã ngắt, tín hiệu “irq” của INCTRL cũng bật xuống báo choCPU biết rằng không còn module nào cần ngắt nữa, kết thúc quá trình

Kết quả:

Dựa theo mô phỏng, ta kết luận hệ thống đã hoạt động đúng

1.1.22 Trường hợp có 3 timer yêu cầu ngắt

Hình 4-5: Hoạt động của hệ thống 3 timer bật cùng lúc

Ban đầu ta sẽ cho các input như sau:

Trang 36

Hình 4-6: Hoạt động giữa CPU và INCTRL 3 timer bật cùng lúc

3) Khi nhận được tín hiệu ngắt, CPU sẽ thực hiện lệnh đọc vào thanh ghi

Trang 37

CPU sẽ tiếp tục ghi giá trị 1’b1 vào thanh ghi clear_register_1 (8’h04) đểngắt module timer_1 Cuối cùng, CPU sẽ ghi giá trị 1’b1 vào thanh ghiclear_register_1 (8’h06) để ngắt module timer_2.

6) Sau khi timer đã ngắt, tín hiệu “irq” của INCTRL cũng bật xuống báo choCPU biết rằng không còn module nào cần ngắt nữa, kết thúc quá trình

Trang 38

Hình 4-8: Hoạt động của hệ thống khi 3 timer bật ngẫu nhiên

1.13 Đánh giá tài nguyên

Trang 39

chưa có ai thực hiện trước đó, nên không có các số liệu để tham khảo và đánh giá.Tuy nhiên, theo quan điểm cá nhân khi nhìn vào những số liệu này thì đây được coi

là một thiết kế tốt

Trang 40

và giảm độ phức tạp của giao thức

Vì đây là đề tài thực hiện dựa theo cấu trúc của ARM nên được xem như là một bước quan trọng trong quá trình nghiên cứu và tiếp cận về lĩnh vực vi mạch bán dẫnvốn đang chiếm ưu thế trong thị trường công nghệ thế giới hiện nay

Qua quá trình thực hiện đề tài, tôi đã học được rất nhiều kiến thức và áp dụng phục

vụ cho việc học tập cũng như là cho công việc sau này

Do quá trình làm luận văn còn nhiều hạn chế về kiến thức, sau khi tôi sẽ phát triển lên thiết kế cả hệ thống SoC thực tế bao gồm IP như CPU, INCTRL, Watch Dog, Timer, RAM, ROM, Image Processor, Sound, Mặt khác, cũng có thể tìm hiểu và phát triển lên các protocol phức tạp hơn của AMBA như là AHB, AXI và ACE,

Ngày đăng: 27/02/2018, 10:43

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w