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

THIẾT kế bộ NHỚ RAM 64 BIT 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 (5.13 MB, 49 trang )

THIẾT KẾ BỘ NHỚ RAM 64 BIT

1


MỤC LỤC

DANH MỤC CÁC TỪ VIẾT TẮT.
WL: Word Lines.
BL: Bit Lines.
WE: Write Eneable.

2


3


DANH MỤC BẢNG BIỂU.
Bảng 1-1: Bảng chức năng các chân………………………………………………4

4


DANH MỤC HÌNH VẼ.
Hình 1-1: Các phân lớp chính của bộ nhớ CMOS.[1]…………………………..1
Hình 1-2: Cấu tạo cơ bản của bộ nhớ.[2]………………………………………....2
Hình 1-3: Sơ đồ cấu tạo nên RAM.[3] ……………………………………………3
Hình 1-4: Quá trình viết trong các tế bào.[4]…………………………………….5
Hình 1-5: Quá trình đọc trong các tế bào.[5]…………………………………….6
Hình 2-1: Sơ đồ khối của RAM.[6]………………………………………………..7


Hình 2-2: Lưa đồ giải thuật………………………………………………………..8
Hình 2-3: Cấu tạo đầy đủ của RAM.[7]…………………………………………..9
Hình 2-4: Cấu tạo của bộ decoder.[8]…………………………………………...10
Hình 2-5: Cấu tạo của tế bào bộ nhớ.[9]………………………………………...11
Hình 2-6: Cấu tạo của WE.[10]…………………………………………………..11
Hình 3-1: Schematic cho RAM 64 bit……………………………………………13
Hình 3-2: Kết quả mô phỏng trên Quartus……………………………………..14
Hình 3-3: Data 1000 được đưa vào địa chỉ 00…………………………………..16
Hình 3-4: Data 0110 được đưa vào địa chỉ 01…………………………………..17
Hình 3-5: Data 0111 được đưa vào địa chỉ 10…………………………………..18
Hình 3-6: Data 1001 được đưa vào địa chỉ 11…………………………………..19
Hình 3-7: Data 1000 xuất ra địa chỉ 00………………………………………….21
Hình 3-8: Data 0110 xuất ra địa chỉ 01………………………………………….22
Hình 3-9: Data 0111 xuất ra địa chỉ 10………………………………………….23
Hình 3-9: Data 1001 xuất ra địa chỉ 11………………………………………….24
Hình 3-10: Tài nguyên sử dụng của mạch………………………………………25
Hình 3-11: Tài nguyên sử dụng của mạch………………………………………26
Hình 3-12: Delay của mạch………………………………………………………26
Hình 3-13: Công nghê sử dụng là 0.5 um………………………………………..27
Hình 3-14: Sơ đồ CMOS của cell RAM.[11]…………………………………….28
Hình 3-15: Layout của cell RAM………………………………………………...28

5


Hình 3-16: Sơ đồ chân CMOS sử dụng cổng nand2.[12]………………………29
Hình 3-17: Layout row decoder………………………………………………….29
Hình 3-18: Sơ đô CMOS của column decoder.[13]……………………………..30
Hình 3-19: Layout của column decoder…………………………………………30
Hình 3-20: Sơ đô CMOS của Sense Amplifier.[14]……………………………..31

Hình 3-21: Layout của Sense Amplifier…………………………………………31
Hình 3-22: Layout của RAM 64 bit……………………………………………...32
Hình 3-23: Kiểm tra DRC………………………………………………………..32

6


Trang 7

CHƯƠNG 1: CƠ SỞ LÍ LUẬN
1.1 Tổng quan về bộ nhớ.
Bộ nhớ bán dẫn là một trong những thành phần quang trọng trong các ICs hiện đại.
Chỉ riêng bộ nhớ nó đã chiếm hơn 30% trong tổng lượng ICs được bán ra trên thế
giới. Trong hệ thống chip, các mạch bộ nhớ chiếm 75% trong tổng số các transistor.
Có 2 phân nhóm chính trong bộ nhớ đó là: volatile and non-volatile memories.

Hình 1-1: Các phân lớp chính của bộ nhớ CMOS.[1]

Read Only Memory (ROM) là kiểu đơn giản nhất trong non-volatile memories.
One-time Programmable Memories (PROM) là thành phần quang trọng nhất trong
họ non-volatile memories, nhưng lại là thành phần phổ biến nhất trong họ nonvolatile memories. Thành phần lâu đời nhất đó là Electrically Programmable ROM (
EPROM) và trong thời gian gần đây đó chính là Electrically Erasable ROM
(EEPROM, FLASH), mới nhất đó là Magneto-resistive RAM (MRAM) và
Ferroelectric RAM (FRAM).

Thiết kế RAM 64 bit.


Trang 8


Random Access Memory (RAM) là một bộ nhớ khả biến, cho phép truy xuất đọcghi ngẫu nhiên, đến một vị trí ngẫu nhiên bất kì trong bộ nhớ dựa theo địa chỉ ô
nhớ. Thông tin lưa trên RAM chỉ là tạm thời, mất đi nếu như mất điện.
Có hai loại bộ nhớ truy cập ngẫu nhiên đó là SRAM (RAM tĩnh) và DRAM (RAM
động) giữ dữ liệu theo các cách khác nhau. DRAM yêu cầu dữ liệu được làm mới
định kì để giữ lại dữ liệu. SRAM không cần làm mới các transistor , bên trong sẽ
tiếp tục giữ dữ liệu miễn là điện năng không bị mất. SRAM được cấu thành từ các
transistor, còn DRAM lại được cấu thành từ các tụ điện nên phải diễn ra quá trình
nạp điện, và cần nạp điện cho tụ thường xuyên. Do đó, SRAM có tốc độ truy cập
nhanh hơn so với DRAM.
1.2 RAM.

Hình 1-2: Cấu tạo cơ bản của bộ nhớ.[2]

Hình 1-2 là hình hiển thị cấu tạo cơ bản của một thanh ghi. Một thanh ghi bao gồm:
bộ nhớ mảng, bộ nhớ giải mã hàng, bộ giải mã cột và mạch đọc.

Thiết kế RAM 64 bit.


Trang 9

Bộ giải mã cột sẽ chọn một hàng trong 2 N từ N bit. Bộ giải mã cột sẽ hoạt động
tương tự trong 2M từ M bit. Bộ nhớ mảng là cơ sở trong 2N hàng và 2M cột với sự lặp
lại của các tế bào cơ bản. Giá trị của N và M thường là 10, kết quả là ta có 1024
hàng và 1024 cột, tương ứng với 1048576 các tế bào bộ nhớ cơ bản.
Ở đây, yêu cầu thiết kế RAM 64 bit nên ta thấy rằng, có N = 2 và M = 4, có 2 2 hàng
và 24 cột, tương ứng có 64 tế bào bộ nhớ.

Hình 1-3: Sơ đồ cấu tạo nên RAM.[3]


RAM 64 bit: WE có nhiệm vụ điều khiển quá trình read hay write, 4 đường địa chỉ
và 16 đường dữ liệu vào ra và xung clock có kích cho các quá trình đọc viết được
diễn ra.
Port

I/O type
Input

Clock
Input
WE
Input
Data in
Thiết kế RAM 64 Output
bit.
Data out

Description
Clock signal
0: Pre-charge
1: Evaluate
1 bit read/write signal
1: Write.
0: Read.
RAM data
When WE is:
1: Write the data to RAM.
RAM data
When WE is:
0: Read the data stored in RAM.



Trang 10

Bảng 1-1: Bảng chức năng các chân.

1.3 Quá trình write và read bên trong RAM.
RAM bao gồm hàng và cột tạo thành một ma trận của tế bào bộ nhớ. Các hàng được
gọi là Word Lines (WL) và điều khiển các hàng để truy cập vào tế bào bộ nhớ, xác
định khi nào có thể nhận được hoặc thay đổi dữ liệu được lưa trữ. Mặt khác, các cột
được gọi là các Bit Lines (BL) có trách nhiệm thực hiện dữ liệu ra và vào của các tế
bào bộ nhớ hay trong quá trình read và write trong tế bào bộ nhớ. Bit Lines thường
tồn tại theo cặp, đối diện nhau (BL và ~BL). Cuối cùng, có các tế bào bộ nhớ có thể
lưa trữ và xuất các giá trị bên trong tế bào.
1.3.1 Quá trình write trong RAM.
Quá trình write vào ô nhớ:
 Tắt Sense Amplifier và kích hoạt pre-charge và cân bằng ngay lập tức.
 Tắt pre-charge, chuẩn bị dữ liệu được viết (Data in =1) và đưa ra lện viết
(WE = 1).
 Kích hoạt Sense Amplifier để khuếch đại các mức logic trên Bit Lines.
 Kích hoạt Word Lines để bật các cổng transistors Q5 và Q6, cho phép thay
đổi giá trị của nó.

Thiết kế RAM 64 bit.


Trang 11

Hình 1-4: Quá trình viết trong các tế bào.[4]


Các đường dây được nạp trước với VDD/2 trước khi hoạt động. Cho Sense
Amplifier hoạt động, data in được đưa vào, sẽ biến BL = 0 và ~BL = 1. Khi WL = 1,
thì Q5 và Q6 bật lên. Một dòng điện xuất phát từ Q đến BL, phóng điện dung CQ,
giảm điện áp trong Q. Tương tự ở phía bên kia, dòng điện sẽ chạy từ ~BL đến ~Q,
sẽ nạp điện dung ký sinh C~Q, tăng điện thế trong ~Q. Khi Q = ~Q = VDD/2, trạng
thái của bộ biến đổi sẽ bắt đầu thay đổi, thông tin phản hồi tích cực sẽ kiểm soát
trạng thái của tế bào và con số trước đó không còn áp dụng nữa. Ô này sẽ ghi nhớ
mức logic mới ‘0’.
1.3.2 Quá trình read trong RAM.
Quá trình read vào trong ô nhớ:
 Tắt Sense Amplifier và kích hoạt pre-charge và cân bằng ngay lập tức.
 Tắt pre-charge.
 Kích hoạt Word Lines để bật các cổng transistors Q5 và Q6, kết nối BL với
các ô. Các dữ liệu được lưa trữ sẽ được truyền đến Bit Lines.

Thiết kế RAM 64 bit.


Trang 12

 Kích hoạt Sense Amplifier để khuếch đại các mức logic trên Bit Lines và cho
WE = 0.

Hình 1-5: Quá trình đọc trong các tế bào.[5]

Trước khi quá trình đọc được thực hiện, Bit Lines trước đây đã được nạp với
VDD/2 trong quá trình viết. Trong các tế bào, Q = 1, ~Q = 0. Khi WL được chọn,
Q5 và Q6 được kích hoạt, Q và BL được kết nối, ~Q và ~BL cũng được kết nối.
Một dòng điện chạy từ VDD đến Q4 và Q6 đến Bit Lines. Nạp năng lượng đến các
tụ ký sinh CB, tăng điện áp trong đường dây. Ở phía đối diện, một dòng điện xuất

phát từ ~BL đến Q5 và Q1 đến khi đến VSS. Nó phóng ra điện dung ký sinh C~B,
làm giảm điện áp. Sự khác biệt giữa BL và ~BL sẽ cho bộ Sense Amplifier phát
hiện được mức logic được lưa trữ trong các tế bào và cho phép xuất ra.

Thiết kế RAM 64 bit.


Trang 13

CHƯƠNG 2: THIẾT KẾ MẠCH
2.1 Sơ đồ khối.

Hình 2-1: Sơ đồ khối của RAM.[6]

Để tạo ra một RAM 64 bit ta cần phải có 4 hàng và 16 cột, để xác định một vị trí tế
bào trong mạch, ta sẽ hàng và cột giao nhau, vị trí mà hàng và cột giao nhau chính
là vị trí địa chỉ ô nhớ ta cần xác định. Muốn chọn hàng và cột, ta dùng hai bộ
decoder để làm việc đó.
Việc read hay wite còn phụ thuộc vào giá trị WE. Ta lưa data in vào một địa chỉ ô
nhớ trong tế bào của RAM. Khi muốn lấy giá trị vừa lưa, ta sẽ truy nhập vào địa chỉ
ô nhớ đã lưa, sau đó giá trị xuất tra chính là data out.

Thiết kế RAM 64 bit.


Trang 14

2.2 Lưa đồ giải thuật.
VDD


1
Clock
Nạp điện

0
1

0

WE
write

read

Data in

Data out

Sense amplifier

Lưa/xuất dữ liệu.
lưa

xuất

Kết thúc

Hình 2-2: Lưa đồ giải thuật.

Thiết kế RAM 64 bit.



Trang 15

Theo như lưa đồ giải thuật ta có: Khi mà có điện áp thì RAM mới hoạt động. Nếu
như xung clock = 0 thì trong quá trình pre-charge, clock = 1 đang ở quá trình
evaluate sẽ là chân kích cho Sense Amplifier hoạt động. Còn WE=1 thì quá write
vào ô nhớ với các dữ liệu được đưa vào từ các chân data in, khi WE = 0 quá trình
read sẽ xảy ra, lúc này dữ liệu được xuất ra các chân data out.
2.3 Nguyên lí hoạt động.

Hình 2-3: Cấu tạo đầy đủ của RAM.[7]

Hình 2-3 cho ta thấy rằng mạch được cấu tạo từ các thành phần sau: row decorder,
column decoder, pre-charge circuit, Memory cell, Mux, Read/Write.
Row decoder cho phép ta điều khiển các WL, column decoder cho phép ta điều
khiển các column MUX, Read/Write điều khiển quá trình read hay write. Còn precharge được điều khiển bởi En (Clock).

Thiết kế RAM 64 bit.


Trang 16

Đầu tiên, row decoder, column decoder và column MUX cho phép ta thiết lập một
địa chỉ ô nhớ tại ô nhớ bất kì bằng cách cho hàng và cột giao nhau. Khi xác định
được vị trí ô nhớ, xung En (Clock) này có giá trị bằng 0. Khi quá trình bắt đầu, data
in được đưa vào thì En (Clock) được đưa lên bằng 1, kích cho Sense Amplifier hoạt
động. Quá trình write hay read còn phụ thuộc vào chân Read/Write quyết định. Nếu
Read/Write = 1 thì quá trình write được diễn ra, Read/Write = 0 thì quá trình read
được diễn ra.

2.4 Chức năng của các bộ phận cấu thành nên RAM.
2.4.1 Row decoder và column decoder.

Hình 2-4: Cấu tạo của bộ decoder.[8]

Để có thể truy cập vào một WL hay BL, ta phải sử dụng một bộ decoder để xác định
đúng vị trí WL hay BL mà ta mong muốn.
Bộ gồm có AK-1 ngõ vào, sau đó khi vào đó các giá trị ngõ vào sẽ được nhân lại với
nhau, sau đó sẽ đảo trạng thái của phép nhân rùi xuất ra giá trị 0 hoặc 1. Rùi gán giá
trị 0 hoặc 1 vừa tìm được vào WL hay BL tương ứng.

Thiết kế RAM 64 bit.


Trang 17

2.4.2 Tế bào bộ nhớ.

Hình 2-5: Cấu tạo của tế bào bộ nhớ.[9]

Cấu tạo của tế bào bộ nhớ được cấu tạo từ 2 inverter mắc ngược nhau được kết nối
với hai n mos. Khi được cấp điện vào WL, hai con n mos sẽ hoạt động, có thể nói
hai con n mos được xem như là hai công tắc, cho phép dòng điện từ BL đỗ vào hai
con inverter để kích hoạt quá trình lưa dữ liệu và xuất dữ liệu.
2.4.3 Read/Write circuit.

Hình 2-6: Cấu tạo của WE.[10]

Thiết kế RAM 64 bit.



Trang 18

Như đã thấy trên hình, WE thật ra là một công tắc được làm từ một con n mos.
Ở đây dữ liệu được đưa lưa vào bằng hai bộ Sense Amplifier hoặc có thể gắn vào
hai mạch đệm ba trạng thái. Hai bộ Sense Amplifier đưa dữ liệu vào và hai đầu ra
được gắn với hai đầu vào của bộ Sense Amplifier để xuất dữ liệu ra ngoài thông qua
WE. Nếu WE = 1, n mos được kích hoạt, bắt đầu lưa dữ liệu. Khi WE = 0, thì n mos
không hoạt động, dữ liệu xuất ra ngoài.
2.4.4 Clock.
Xung clock được chia thành hai quá trình. Khi bằng 0 thì xung clock sẽ bắt đầu chế
độ nạp điện khi kích qua một con p mos, lúc này mạch sẽ nạp điện truyền đến các
BL. Nếu như bằng 1 thì sẽ kích cho con Sense Amplifier hoạt động giúp cho mạch
tăng tốc độ. Khi có xung clock bằng 1 thì quá trình read, write mới hoạt động.

Thiết kế RAM 64 bit.


Trang 19

CHƯƠNG 3: KẾT QUẢ THIẾT KẾ.
3.1 Schematic cho RAM 64 bit.

Hình 3-1: Schematic cho RAM 64 bit.

Hình 3-1 cho ta thấy cấu tạo của một RAM, ở mỗi địa chỉ tạo ra một khối. Ở đây
mạch có 4 khối địa chỉ và mỗi khối được cấp bốn bit dữ liệu vào tương ứng với quá
trình lưa dữ liệu và 4 bit dữ liệu ra tương ứng quá trình xuất dữ liệu.

Thiết kế RAM 64 bit.



Trang 20

Hình 3-2: Kết quả mô phỏng trên Quartus.

Khi wren = 1 thì quá trình lưa dữ liệu bắt đầu. Xung clock bằng 1 quá trình lưa dữ
liệu bắt đầu.
 Ta chọn đia chỉ 00 với giá trị đầu vào là 1000, sau một khoảng delay thì giá
trị đã được lưa vào q là 1000.
 Ta chọn đia chỉ 01 với giá trị đầu vào là 0110, sau một khoảng delay thì giá
trị đã được lưa vào q là 0110.
 Ta chọn đia chỉ 10 với giá trị đầu vào là 0111, sau một khoảng delay thì giá
trị đã được lưa vào q là 0111.
 Ta chọn đia chỉ 11 với giá trị đầu vào là 1001, sau một khoảng delay thì giá
trị đã được lưa vào q là 1001.
Khi wren = 0, quá trình xuất dữ liệu bắt đầu. Xung clock bằng 1 quá trình mới được
bắt đầu.





Khi truy cập vào địa chỉ 00, ta lấy giá trị được lưa xuất ra q là 1000.
Khi truy cập vào địa chỉ 01, ta lấy giá trị được lưa xuất ra q là 0110.
Khi truy cập vào địa chỉ 10, ta lấy giá trị được lưa xuất ra q là 0111.
Khi truy cập vào địa chỉ 11, ta lấy giá trị được lưa xuất ra q là 1001.

Thiết kế RAM 64 bit.



Trang 21

3.2 Tổng hợp logic thực thi trên DE2.
3.2.1 Test các trường hợp write trên DE2.
Đầu tiên ta thực hiện gán chân vào DE2:













SW (0) là clock.
SW (1) là wren.
SW (2) là data (0).
SW (3) là data (1).
SW (4) là data (2).
SW (5) là data (3).
SW (6) là address (0).
SW (7) là address (1).
Ledg (0) là q (0).
Ledg (1) là q (1).
Ledg (2) là q (2).

Ledg (3) là q (3).

Ta bật chân SW (1) mặc định bằng 1 để thực hiện quá trình lưa dữ liệu, bật SW (2),
SW (3), SW (4), SW (5) lần lượt là 1000, 0110, 0111, 1001 là các dữ liệu vào, bật
SW (0) bằng 1 sẽ cho phép việc lưa từng kết quả vào các địa chỉ SW (6), SW (7) lần
lượt là 00, 01, 10, 11. Sau đó giá trị được lưa sẽ xuất ra các chân Ledg (0), Ledg (1),
Ledg (2), Ledg (3) trên kit.

Thiết kế RAM 64 bit.


Trang 22

Hình 3-3: Data 1000 được đưa vào địa chỉ 00.

Bật SW (0), SW (1) bằng 1 để thực hiện quá trình lưa dữ liệu. Bật SW (2), SW (3),
SW (4), SW (5) lần lượt là 1000 vào địa chỉ SW (6), SW (7) lần lượt là 00. Kết quả
sẽ lưa vào các Ledg (0), Ledg (1), Ledg (2), Ledg (3) lần lượt là 1000.

Thiết kế RAM 64 bit.


Trang 23

Hình 3-4: Data 0110 được đưa vào địa chỉ 01.

Bật SW (0), SW (1) bằng 1 để thực hiện quá trình lưa dữ liệu. Bật SW (2), SW (3),
SW (4), SW (5) lần lượt là 0110 vào địa chỉ SW (6), SW (7) lần lượt là 01. Kết quả
sẽ lưa vào các Ledg (0), Ledg (1), Ledg (2), Ledg (3) lần lượt là 0110.


Thiết kế RAM 64 bit.


Trang 24

Hình 3-5: Data 0111 được đưa vào địa chỉ 10.

Bật SW (0), SW (1) bằng 1 để thực hiện quá trình lưa dữ liệu. Bật SW (2), SW (3),
SW (4), SW (5) lần lượt là 0111 vào địa chỉ SW (6), SW (7) lần lượt là 10. Kết quả
sẽ lưa vào các Ledg (0), Ledg (1), Ledg (2), Ledg (3) lần lượt là 0111.

Thiết kế RAM 64 bit.


Trang 25

Hình 3-6: Data 1001 được đưa vào địa chỉ 11.

Bật SW (0), SW (1) bằng 1 để thực hiện quá trình lưa dữ liệu. Bật SW (2), SW (3),
SW (4), SW (5) lần lượt là 1001 vào địa chỉ SW (6), SW (7) lần lượt là 11. Kết quả
sẽ lưa vào các Ledg (0), Ledg (1), Ledg (2), Ledg (3) lần lượt là 1001.

Thiết kế RAM 64 bit.


×