THIẾT kế bộ NHỚ RAM 64 BIT FPGA (có code) .............................................. THIẾT kế bộ NHỚ RAM 64 BIT FPGA (có code) .............................................. THIẾT kế bộ NHỚ RAM 64 BIT FPGA (có code) .............................................. THIẾT kế bộ NHỚ RAM 64 BIT FPGA (có code) .............................................. THIẾT kế bộ NHỚ RAM 64 BIT FPGA (có code) ..............................................
Trang 4Bảng 1-1: Bảng chức năng các chân………4
Trang 5Hì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
Trang 6Hì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
Trang 7CHƯƠ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ọ volatile memories, nhưng lại là thành phần phổ biến nhất trong họ volatile 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)
Trang 8non-Random Access Memory (RAM) là một bộ nhớ khả biến, cho phép truy xuất ghi 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-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áctransistor, 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ìnhnạp điện, và cần nạp điện cho tụ thường xuyên Do đó, SRAM có tốc độ truy cậpnhanh 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]
Trang 9Bộ giải mã cột sẽ chọn một hàng trong 2N từ N bit Bộ giải mã cột sẽ hoạt độngtươ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ặplạ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ó 1024hà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ó 22 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 đượcdiễn ra
Clock Input 0: Pre-chargeClock signal
Trang 10Bả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 đượcgọ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ườngtồ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ó
Trang 11Hì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 SenseAmplifier 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ạngthá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áttrạ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ớicác ô Các dữ liệu được lưa trữ sẽ được truyền đến Bit Lines
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ớiVDD/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ấtphá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áthiện được mức logic được lưa trữ trong các tế bào và cho phép xuất ra
Trang 13CHƯƠ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
Trang 142.2 Lưa đồ giải thuật.
1
0
1 0
write read
lưa xuất
Hình 2-2: Lưa đồ giải thuật.
VDD
Clock Nạp điện
WE
Sense amplifier
Lưa/xuất dữ liệu.
Kết thúc
Trang 15Theo như lưa đồ giải thuật ta có: Khi mà có điện áp thì RAM mới hoạt động Nếunhư xung clock = 0 thì trong quá trình pre-charge, clock = 1 đang ở quá trìnhevaluate sẽ là chân kích cho Sense Amplifier hoạt động Còn WE=1 thì quá writevà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ìnhread 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ềukhiển các column MUX, Read/Write điều khiển quá trình read hay write Còn pre-charge được điều khiển bởi En (Clock)
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ếuRead/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ớinhau, 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
Trang 172.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]
Trang 18Như đã 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àohai 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 moskhô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ạchtăng tốc độ Khi có xung clock bằng 1 thì quá trình read, write mới hoạt động
Trang 19CHƯƠ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 Ở đâymạ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
Trang 20Hì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 đượcbắ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
Trang 213.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:
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ầnlượ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
Trang 22Hì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
Trang 23Hì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
Trang 24Hì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
Trang 25Hì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
Trang 263.2.2 Test các trường hợp read trên DE2.
Đầu tiên ta thực hiện gán chân vào DE2:
Trang 27Hình 3-7: Data 1000 xuất ra địa chỉ 00.
Ta bật chân SW(1), SW(2), SW(3), SW(4), SW(5) mặc định bằng 0 để thực hiệnquá trình xuất dữ liệu, bật SW(0) bằng 1 sẽ cho phép việc xuất từng kết quả ở cácđịa chỉ SW(6), SW(7) lần lượt là 00 Kết quả sẽ xuất ra các Ledg(0), Ledg(1),Ledg(2), Ledg(3) lần lượt là 1000
Trang 28Hình 3-8: Data 0110 xuất ra địa chỉ 01.
Ta bật chân SW(1), SW(2), SW(3), SW(4), SW(5) mặc định bằng 0 để thực hiệnquá trình xuất dữ liệu, bật SW(0) bằng 1 sẽ cho phép việc xuất từng kết quả ở cácđịa chỉ SW(6), SW(7) lần lượt là 01 Kết quả sẽ xuất ra các Ledg(0), Ledg(1),Ledg(2), Ledg(3) lần lượt là 0110
Trang 29Hình 3-9: Data 0111 xuất ra địa chỉ 10.
Ta bật chân SW(1), SW(2), SW(3), SW(4), SW(5) mặc định bằng 0 để thực hiệnquá trình xuất dữ liệu, bật SW(0) bằng 1 sẽ cho phép việc xuất từng kết quả ở cácđịa chỉ SW(6), SW(7) lần lượt là 10 Kết quả sẽ xuất ra các Ledg(0), Ledg(1),Ledg(2), Ledg(3) lần lượt là 0111
Trang 30Hình 3-9: Data 1001 xuất ra địa chỉ 11.
Ta bật chân SW(1), SW(2), SW(3), SW(4), SW(5) mặc định bằng 0 để thực hiệnquá trình xuất dữ liệu, bật SW(0) bằng 1 sẽ cho phép việc xuất từng kết quả ở cácđịa chỉ SW(6), SW(7) lần lượt là 11 Kết quả sẽ xuất ra các Ledg(0), Ledg(1),Ledg(2), Ledg(3) lần lượt là 1001
Trang 313.3 Đánh giá delay, power, tài nguyên sử dụng.
3.3.1 Tài nguyên sử dụng.
Hình 3-10: Tài nguyên sử dụng của mạch.
Hình cho thấy là mạch sử 20 pin trong tổng 475 pin và sử dụng 16 bit bộ nhớ trêntổng 483,840 bit bộ nhớ Các giá trị khác mạch không sử dụng đến
Trang 323.3.2 Đánh giá power.
Hình 3-11: Tài nguyên sử dụng của mạch.
Trên hình cho ta thấy mạch sử dụng tổng công suất là 112.29 mW, trong đó thì cungcấp năng lương cho các transistor hoạt động cần 79.93 mW và cấp cho in và output
là 32.36 mW
3.3.3 Đánh giá delay.
Trang 33Khi mà xung clock được kích lên 1 thì các quá trình lưa viết sẽ được bắt đầu, nhưng
mà giữa các khoảng thời gian đó sẽ có 1 khoảng trễ nhất định đó là khoảng 4.914ns
3.4 Layout của mạch.
3.4.1 Công nghệ CMOS sử dụng.
Hình 3-13: Công nghê sử dụng là 0.5 um.