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

THIẾT kế bộ SRAM NGOẠI VI TRÊN nền TẢNG CÔNG NGHỆ FPGA (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 (2.79 MB, 66 trang )

ĐỒ ÁN TỐT NGHIỆP

THIẾT KẾ BỘ SRAM NGOẠI VI TRÊN
NỀN TẢNG CÔNG NGHỆ FPGA

1


MỤC LỤC

2


DANH MỤ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
ASIC

Application-Specific Integrated Circuit.

BJT

Bipolar Junction Transistor.



CAM

Content Addressable Memory.

DRAM

Dynamic Random Access Memory.

DSP

Digital Signal Processor.

EDA

Electronic Design Automation.

EEPROM

Electrically Erasable Programmable Read-Only Memory.

EPROM

Erasable Programmable Read-Only Memory.

FIFO

First In First Out.

FPGA


Field-Programmable Gate Array.

IC

Integrated Circuit.

JTAG

Joint Test Action Group.

LED

Light Emitting Diode.

LIFO

Last In First Out.

LPM

Library Parameterized Modules.

LSB

Least Significant Bit.

LUT

Look-up Table.


MMU

Memory Management Unit.

MOSFET

Metal-Oxide-Semiconductor Field Effect Transistor.

MPU

Memory Protection Unit.

MSB

Most Significant Bit.

NVRWM

Non-Volatile Read-Write Memory.

PISO

Parallel In Serial Out.

5


PLD


Programmable Logic Device.

PROM

Programmable Read-Only Memory.

RAM

Random Access Memory.

RISC

Reduced Instructions Set Computer.

ROM

Read-Only Memory.

RWM

Read-Write Memory.

SIPO

Serial In Parallel Out.

SOPC

System on a Programmable Chip.


SRAM

Static Random Access Memory.

VHDL
Language.

Very High Speed Intergrated Circuit Hardware Description

6


Trang 7/61

CHƯƠNG 1.
1.1.

TÌM HIỂU VỀ CÔNG NGHỆ FPGA.

Định nghĩa và cấu trúc tổng thể của FPGA:

FPGA là một loại mạch tích hợp cỡ lớn dùng cấu trúc mảng phần tử logic mà
người dùng có thể lập trình được.
FPGA được cấu thành từ các bộ phận:





Các khối logic có thể lập trình được (Logic Block).

Hệ thống mạng liên kết (Interconnect).
Khối vào/ra (I/O Block).
Phần tử thiết kế sẵn khác như: RAM, ROM, nhân vi xử lý,...

Hình 1-1: Cấu trúc tổng thể của một FPGA.
Khối logic (Logic Block):
Đây chính là phần tử chính của FPGA. Về cơ bản các khối logic được cấu thành từ
một bảng tra LUT, một Flip-Flop và một bộ MUX 2 sang 1.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 8/61





LUT là một khối có thể thực hiện các hàm logic từ các ngõ vào, kết quả của
các hàm này tùy thuộc vào mục đích mà gửi ra ngoài khối logic trực tiếp hay
thông qua phần tử nhớ Flip-Flop.

Hình 1-2: Cấu trúc của một khối logic 4 ngõ vào.
Hệ thống mạng liên kết (Interconnect):
Hệ thống mạng liên kết trong FPGA được cấu thành từ các đường kết nối theo
phương ngang và dọc. Các đường kết nối này được nối thông qua các khối chuyển
mạch có thể lập trình được (programmable switch). Trong khối chuyển mạch có
chứa một số lượng nút chuyển mạch có thể lập trình được đảm bảo cho các dạng
liên kết phức tạp khác nhau.


Hình 1-3: Hệ thống mạng liên kết.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 9/61

Khối vào/ra (I/O Block): kết nối ra các chân của FPGA.
1.2.

Quy trình thiết kế một FPGA:

Hình 1-4: Quy trình thiết kế FPGA.
Mô tả ban đầu về thiết kế:
Bước đầu tiên này có nhiệm vụ tiếp nhận các yêu cầu của thiết kế và xây dựng nên
kiến trúc tổng quát của thiết kế. Quá trình này gồm các bước:


Mô tả thiết kế: một thiết kế có thể được mô tả bằng cách sử dụng ngôn
ngữ mô tả phần cứng như VHDL hay Verilog hoặc có thể được mô tả
thông qua bản vẽ mạch (schematic capture).

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 10/61

Mô phỏng chức năng: mô phỏng tổng thể thiết kế về mặt chức năng để
kiểm tra xem thiết kế đó có hoạt động đúng với các chức năng yêu cầu
hay không.

• Tổng hợp logic: tổng hợp các mô tả của thiết kế thành một sơ đồ bố trí
mạch.
• Hiệu chỉnh các kết nối: nhập netlist và các ràng buộc về thời gian vào
một công cụ phân tích thời gian (Timing Analysic). Dựa trên kết quả
phân tích của công cụ phân tích để xác định các kết nối không thỏa
mãn về thời gian. Tùy theo nguyên nhân dẫn đến không thỏa mãn mà
ta có thể viết lại mã và tiến hành tổng hợp lại logic hoặc hiệu chỉnh lại
các ràng buộc.
Thực thi:
• Ánh xạ (mapping): chuẩn bị dữ liệu đầu vào, xác định kích thước của
các khối sao cho các khối này sẽ phải phù hợp với cấu trúc một tế bào
cơ bản của FPGA và đặt chúng vào các vị trí tối ưu cho việc chạy dây.
• Đặt khối: đặt các khối ánh xạ vào các tế bào (cell) ở vị trí tối ưu cho
việc chạy dây.
• Định tuyến: thực hiện việc nối dây các tế bào.
Nạp hay lập trình:


Sau quá trình thực hiện, thiết kế cần được nạp vào FPGA dưới dạng dòng bit. Quá
trình nạp thiết kế vào FPGA thường nạp vào bộ nhớ bay hơi, ví dụ như SRAM.
Thông tin cấu hình sẽ được nạp vào bộ nhớ. Dòng bit được truyền lúc này sẽ mang
thông tin định nghĩa các khối logic cũng như kết nối của thiết kế.
Lập trình là thuật ngữ để mô tả quá trình nạp chương trình cho các bộ nhớ không
bay hơi, ví dụ như PROM.
1.3. Tổng quan về phần mềm Quartus II sử dụng trong FPGA:
Quartus II là một phần mềm dùng để mô phỏng mạch số cho các IC của hãng
Altera, phần mềm này cung cấp một môi trường thiết kế toàn diện cho các
thiết kế SOPC.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA



Trang 11/61

Hình 1-5: Giao diện của Quartus II.
Một số dòng linh kiện logic khả trình PLD của Altera: Cyclone, Stratix, MAX,…
Quartus II cung cấp các khả năng thiết kế logic như:










Môi trường thiết kế như: bản vẽ, sơ đồ khối, công cụ soạn thảo các
kiểu ngôn ngữ lập trình: VHDL, Verilog HDL,…
Thiết kế LogicLock.
Khả năng tổng hợp logic mạnh.
Mô phỏng chức năng và thời gian.
Phân tích thời gian.
Xuất, tạo và kết nối các file nguồn để tạo ra các file chương trình.
Định vị lỗi tự động.
Lập trình và nhận diện linh kiện.


Ngoài ra, Quartus II cho phép người dùng làm việc với nhiều file cùng m ột lúc,
có thể soạn thảo file thiết kế trong khi biên dịch hay chạy mô ph ỏng các dự án

khác.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 12/61

1.4. Tổng quan về bộ xử lý Nios II chuyên dùng trong FPGA:
1.4.1.
Giới thiệu về Nios II:
Nios II là một bộ xử lý nhúng được thiết kế chuyên dùng cho các
dòng chip FPGA của Altera. Nios II là thế hệ tiếp theo của bộ xử lý
thế hệ đầu Nios (16-bit) của Altera.
Nios II có kiến trúc RISC soft-core, nghĩa là Nios II được tạo thành
hoàn toàn bằng các phần tử logic và các memory block của Altera
FPGA. Kiến trúc soft-core của vi xử lý Nios II có thể được tùy biến
lõi CPU Nios II theo mục đích thiết kế và có thể mở rộng khả năng
của CPU bằng cách thêm các tính năng như quản lý bộ nhớ MMU
hoặc các lệnh tùy biến.
1.4.2.
Các đặc tính của Nios II:
• Tập lệnh, đường địa chỉ 32-bit.
• Có 32 thanh ghi đa dụng, 32 nguồn ngắt và bộ điều khiển ngắt ngoài.
• Lệnh đơn nhân và chia thực hiện trên 32-bit và kết quả tạo ra 32-bit.
• Lệnh dành riêng cho kết quả nhân 64-bit và 128-bit.
• Lệnh thực hiện các phép tính dấu chấm động với độ chính xác đ ơn.
• Lệnh đơn cho phép toán dịch.
• Truy cập các thiết bị ngoại vi on-chip, bộ nhớ off-chip và các ngoại vi
khác nhau.
• Cung cấp môi trường phần mềm GNU dựa trên C/C++ và Nios II

Software Built Tools for Eclipse.
• Hiệu suất lên tới 250DMIPS.
1.4.3.
Các phiên bản core của Nios II:
• Nios II Economy Core (Nios II /e core): có kích thước nhỏ nhất
trong các phiên bản core của Nios II với khoảng 600 phần tử
logic nên phù hợp với các ứng dụng vi điều khiển.
• Nios II Standard Core (Nios II/s core): là bộ xử lý được thi ết kế v ới kích
thước nhỏ nhưng vẫn duy trì được hiệu suất vừa phải.
• Nios II Fast Core (Nios II/f core): là bộ xử lý được thi ết kế cho các ứng
dụng có hiệu suất cao và có những tùy chọn cấu hình cao mà các phiên
bản khác không có.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 13/61

1.4.4.
Các tính năng của Nios II:
Nios II tích hợp nhiều tính năng tiên tiến, thích hợp cho nhiều ứng
dụng như DSP hay điều khiển. Ngoài ra, Nios II còn nhiều tính năng
như:












Quản lý bộ nhớ (MMU).
Đơn vị bảo vệ bộ nhớ (MPU).
Hệ thống vector ngắt với các bộ điều khiển ngắt độc lập.
Hệ thống Instruction và Data Caches riêng biệt (có thể cấu
hình từ 512 bytes tới 64 KB).
Khả năng định địa chỉ lên tới 2 GB.
Bộ nhân và dịch phần cứng thực thi trong 1 chu kỳ.
Có khả năng tiên đoán các lệnh rẽ nhánh động.
Có thể thêm tới 256 lệnh tùy biến, không giới hạn các bộ
tăng tốc hardware.
Module JTAG Debug có thể tùy biến.


CHƯƠNG 2.

GIỚI THIỆU VỀ VERILOG HDL.

2.1.
Tổng quan về Verilog HDL:
Verilog HDL là một trong những ngôn ngữ mô tả phần cứng được dùng phổ
biến hiện nay và được dùng chủ yếu trong thiết kế IC.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 14/61


Verilog HDL thường mô tả thiết kế ở bốn dạng:





Thuật toán.
Chuyển đổi thanh ghi.
Các cổng kết nối.
Chuyển mạch (BJT, CMOS).

2.2.

Cấu trúc chung:
Module tên chương trình (tên biến I/O);
Input [MSB:LSB] biến;
Output [MSB:LSB] biến;
Reg [MSB:LSB] biến reg;
Wire [MSB:LSB] biến wire;
// Khai báo khối always, hoặc khối initial.
{các lệnh}
Endmodule

2.3.
Các dạng dữ liệu:
• Các giá trị cơ bản:
• 0: mức logic 0 hoặc điều kiện sai.
• 1: mức logic 1 hoặc điều kiện đúng.
• X: mức logic tuỳ định.

• Z: trạng thái tổng trở cao.
• Wire:
Mô tả đường dây dẫn và được dùng kết nối các cổng hay các module. Giá trị
của wire có thể đọc nhưng không gán trong các hàm (function) hoặc kh ối
(block).
Wire [MSB:LSB] tên biến wire.


Reg:

Reg là kiểu dữ liệu mà nó chứa giá trị từ một thủ tục gán kế ti ếp và chỉ được
dùng trong hàm và khối thủ tục.
Reg [MSB:LSB] tên biến reg.
Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 15/61



Input, Ouput, Inout:

Mô tả ngõ vào, ngõ ra và port hai chiều của một module. Mặc định kiểu dữ
liệu là wire.
Input [MSB:LSB] tên ngõ vào.
Output [MSB:LSB] tên ngõ ra.
Inout [MSB:LSB] port đầu vào và ra hai chiều.


Integer:


Integer mô tả số nguyên và là một biến đa năng dùng chủ y ếu cho vòng l ặp,
tham số và hằng số. Kích thước mặc định là 32 bit.
Integer tên biến;


Time:

Time là một lượng 64 bit được sử dụng cùng với $time (hệ thống
thao tác chứa lượng thời gian mô phỏng). Time không được hỗ trợ
tổng hợp nên chỉ được dùng trong mục đích mô phỏng.
Time tên biến time;


Parameter:

Một Parameter xác định một hằng số và nó cho phép sửa chữa.
Parameter [giới hạn] par_3 = giá trị;
2.4.
Toán tử:
• Toán tử số học:
Chức năng của toán tử số học là thực hiện các phép tính số học. Các toán tử s ố
học bao gồm: +, -, *, /, %.


Toán tử quan hệ:

Dùng so sánh hai toán hạng và trả về một bit đơn là 0 hoặc 1. Các toán tử quan
hệ bao gồm: <, <=, >, >=, = =, !=.



Toán tử bit_wire:

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 16/61

Dùng để so sánh từng bit của hai toán toán hạng. Các toán tử bit_wire g ồm: ~
(bitwire NOT), & (bitwire AND), | (bitwire OR), ^ (bitwire XOR), ~^ hoặc ^~
(bitwire XNOR).


Toán tử logic:

Toán tử logic trả về một bit đơn là 0 hoặc 1 và được dùng nhiều trong lệnh
điều kiện (if… else) khi làm việc trên biểu thức. Các toán tử logic gồm: !(NOT),
&& (AND), || (OR).


Toán tử biến đổi:

Toán tử biến đổi có tác dụng trên tất cả các bit của một vectơ toán hạng và trả
về giá trị đơn bit. Các toán tử biến đổi gồm: ~ (biến đổi NOT), & (bi ến đổi
AND), ~& (biến đổi NAND), | (biến đổi OR), ~| (biến đổi NOR), ^ (bi ến đổi
XOR), ~^ hoặc ^~ (biến đổi XNOR).


Toán tử dịch:


Vị trí còn trống sẽ được điền vào bằng những số 0. Gồm hai loại:
<< ( dịch trái) và >> (dịch phải).


Toán tử ghép:

Dùng để ghép hai hoặc nhiều toán hạng thành một vectơ lớn. Toán
tử ghép: {}.


Toán tử điều kiện:

Dùng định giá một trong hai biểu thức cơ bản trong một điều kiện. Toán tử
điều kiện: (điều kiện)? kết quả khi điều kiện đúng : kết quả khi điều kiện sai.


Thứ tự thực hiện các toán tử:

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 17/61

Bảng 1: Thứ tự thực hiện các toán tử.
2.5.
Khối always và initial:
• Khối always:
Khối always có thể được dùng trong chốt, Flip Flop hay các kết nối logic. Tất
cả các khối always trong một module thực thi liên tục và nó thực hi ện bằng
mức, cạnh lên/xuống của một hoặc nhiều tín hiệu.

Always @(sự kiện 1 or sự kiện
2 or…)
Begin: tên khối
{các lệnh}
end

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 18/61



Khối initial:

Cũng tương tự như khối always nhưng khối initial chỉ thực thi một
lần từ lúc bắt đầu của quá trình mô phỏng.
Initial
Begin
{các lệnh}
end
2.6.
Một số lệnh thông dụng:
• Vòng lặp for:
Dùng để thực hiện nhiều lần một lệnh hoặc khối lệnh.
For (biến đếm = giá trị 1; biến đếm 2; biến đếm = biến đếm +/- giá trị)
Begin
{lệnh}
End



Vòng lặp while:

Thực hiện nhiều lần một lệnh hoặc khối lệnh cho đến khi biểu thức
trong lệnh while định giá là sai.
While (biểu thức)
Begin
{các lệnh}
End


Khối lệnh if … else if …else:

Thực hiện một lệnh hoặc một khối lệnh phụ thuộc vào kết quả của
biểu thức theo sau mệnh đề if.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 19/61

If (biểu thức)
Begin {các lệnh} end
else if (biểu thức)
Begin {các lệnh} end
else
Begin {các lệnh} end



Case:

Lệnh case cho phép lựa chọn trường hợp.
Case (biểu thức)
Case 1:
Begin {các
Case 2:
Begin {các
Case 3:
Begin {các

default:
Begin {các
endcase

CHƯƠNG 3.

lệnh} end
lệnh} end
lệnh} end

lệnh} end

TÌM HIỂU VỀ BỘ NHỚ BÁN DẪN.

3.1.
Giới thiệu tổng quát:
Bộ nhớ bán dẫn được hình thành từ các “memory cells” (gọi tắt là cells). M ột
cell tương đương với một bit, một nhóm các bit sẽ tạo thành một word. Mỗi
word dùng để biểu diễn các lệnh hoặc dữ liệu dưới dạng nhị phân.

Dung lượng tổng cộng của bộ nhớ sẽ bằng với số word (2 n) nhân với số bit
(2m) trên một word.
Để truy cập đến nội dung của từng word, mỗi word trong bộ nhớ bán dẫn sẽ
được định một địa chỉ khác nhau.
Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 20/61

3.2.
Cấu trúc của bộ nhớ bán dẫn:
Thông thường, bộ nhớ bán dẫn sẽ gồm nhiều hàng với mỗi hàng là một word,
trên mỗi word sẽ gồm các bits (hay các cells).
Mỗi một cell có thể có một hoặc nhiều port để truy nhập. Trong một bộ nh ớ
đọc/ghi, mỗi port có thể chỉ đọc, chỉ ghi hoặc có thể đọc và ghi.
Do số bit trong mỗi word là cố định và chỉ có số lượng word là có thể thay đổi
nên khi dung lượng bộ nhớ tăng thì chỉ có một chiều kích thước của bộ nhớ
tăng theo. Vì vậy sẽ gây khó khăn cho việc tích hợp bộ nhớ. Một bộ nhớ có
hình dạng càng vuông thì sẽ càng tốt cho việc tích hợp bộ nhớ. Đ ể gi ải quy ết
vấn đề này, một giải pháp được đưa ra là ghép khối và giải mã địa chỉ theo cả
hàng và cột.
Mặc khác, vì số lượng word trong một bộ nhớ bán dẫn là rất lớn nên ta có thể
sử dụng thêm bộ giải mã địa chỉ (decoder) để giảm số lượng các đường tín
hiệu trong thiết kế.

Hình 3-6: Cấu trúc chung của mảng nhớ[1].

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA



Trang 21/61

Hình 3-7: Cấu trúc chung của bộ nhớ bán dẫn[2].

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 22/61

3.3.

Phân loại:
SRAM
Random Access
DRAM

FIFO

RWM

LIFO
Non-Random Access
Shift Register
EPROM
CAM

Semiconductor Memory
NVRWM

EEPROM


Flash

Mask ROM
ROM
PROM

Hình 3-8: Sơ đồ phân loại bộ nhớ bán dẫn.
3.4.

Tìm hiểu về các loại bộ nhớ bán dẫn:

3.4.1.
SRAM:
SRAM là bộ nhớ có khả năng đọc và ghi dữ liệu ngẫu nhiên, đồng thời dữ liệu của
SRAM sẽ được lưu giữ khi nguồn hoạt động.
3.4.1.1.
Cấu trúc một cell của SRAM:
Mỗi cell của SRAM được cấu tạo từ một mạch Flip-Flop dùng transistor BJT hoặc
MOS.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 23/61

Hình 3-9: 6T SRAM cell[3].
Hình 3-4 biểu diễn một cell tiêu chuẩn của SRAM được cấu tạo bởi sáu
transistors loại MOS. Trong đó, bốn transistors được dùng làm hai cổng đảo và
hai cổng đảo này được nối chéo với nhau; hai transistors còn lại là hai

transistor truy nhập được dùng để đọc và ghi các trạng thái.
3.4.1.2.
Sơ đồ khối và hoạt động của SRAM:
Sơ đồ khối cơ bản của một SRAM:
Cấu trúc cơ bản của một SRAM thường bao gồm một hoặc nhiều mảng nh ớ
và các mạch hỗ trợ để giải mã địa chỉ, bổ sung các tính năng cho hoạt động
đọc và ghi hoặc các tính năng đặc biệt khác.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 24/61

Hình 3-10: Sơ đồ khối của một SRAM đồng bộ.
3.4.2.
DRAM:
DRAM là bộ nhớ bán dẫn lưu trữ dữ liệu nhờ vào sự nạp/xả của tụ đi ện hay
nói cách khác là dữ liệu đã lưu trữ trong DRAM muốn tồn tại thì phải được ghi
lại theo chu kì.
DRAM được chia thành các loại như:
SDRAM: là DRAM đồng bộ, loại này gồm: SDR, DDR, DDR2, DDR3 và
DDR4.
• RDRAM: thường được gọi là Rambus, nó hoạt động đồng bộ theo
một hệ thống lặp và truyền dữ liệu theo một hướng.


Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


Trang 25/61


3.4.2.1.

Cấu trúc một cell của DRAM:

Hình 3-11: Cấu trúc một cell của DRAM.
Hình 2-8 là cấu trúc của một cell DRAM 1T (1-transistor) bao gồm một
transistor và một tụ điện. Cũng giống như SRAM, các cells của DRAM cũng
được truy cập bởi wordline và bitline.
3.4.2.2.

Cấu trúc của DRAM:

Hình 3-12: Cấu trúc cơ bản của DRAM.

Thiết kế bộ SRAM ngoại vi trên nền tảng công nghệ FPGA


×