SlideShare a Scribd company logo
1 of 41
Download to read offline
Spartan-3E Starter Kit
                                                                                        Biên soạn: thavali
                                                                    ĐH Khoa Học Tự Nhiên TP.Hồ Chí Minh.
I. CÁC THÀNH PHẦN CỦA KIT

1.     Xilinx XC3S500E Spartan-3E FPGA : con chính của KIT
2.     Xilinx 4 Mbit Platform Flash configuration PROM
3.     Xilinx 64-macrocell XC2C64A CoolRunner CPLD
4.     64 MByte (512 Mbit) of DDR SDRAM, x16 data interface, 100+ MHz
5.     16 MByte (128 Mbit) of parallel NOR Flash (Intel StrataFlash)
6.     16 Mbits of SPI serial Flash (STMicro)
7.     2-line, 16-character LCD screen
8.     PS/2 mouse or keyboard port
9.     VGA display port
10.    10/100 Ethernet PHY (requires Ethernet MAC in FPGA)
11.    Two 9-pin RS-232 ports (DTE- and DCE-style)
12.    On-board USB-based FPGA/CPLD download/debug interface
13.    50 MHz clock oscillator
14.    SHA-1 1-wire serial EEPROM for bitstream copy protection
15.    Hirose FX2 expansion connector
16.    Three Digilent 6-pin expansion connectors
17.    Four-output, SPI-based Digital-to-Analog Converter (DAC)
18.    Two-input, SPI-based Analog-to-Digital Converter (ADC) with programmable-gain
19.    pre-amplifier
20.    ChipScope™ SoftTouch debugging port
21.    Rotary-encoder with push-button shaft
22.    Eight discrete LEDs
23.    Four slide switches

II. SƠ ĐỒ CHÂN CỦA XC3S500E

XC3S500E có kiểu chân BGA, 320 chân như hình:
Cách đánh số chân:
Vị trí của 1 chân được xác định theo qui tắc ma trận 2 chiều. Chiều ngang (dòng) là số từ 0 tới 18. Chiều dọc
(cột) là chữ từ A tới V.
Ví dụ: chân A1, là chân ở dòng A, cột 1. Đây là chân GND của FPGA.
Tài nguyên: 10000 logic cells, có 232 chân I/O cho người dùng tự định nghĩa.
III. BỘ TẠO DAO ĐỘNG TRÊN KIT

Có 3 nguồn cập xung clk cho FPGA:
   1. Dùng thạch anh có sẵn 50 MHz trên board.
   Ngõ ra của thạch anh nối với chân C9 của chip.
   2. Cấp xung clk thông qua chân cắm 8 pin trên board (hình 3.1)
   Ngõ ra của thạch anh nối với chân B8 của chip.
   3. Cấp Cấp xung clk thông qua chân cắm SMA, chân cắm này chỉ nhận clk từ máy phát clk, không dùng
   trực tiếp thạch anh được .
   Ngõ ra clk nối với chân A10 của chip.
IV. CÁC NÚT CHUYỂN, NÚT NHẤN, LED

4 nút chuyển (hình 2-1) theo thứ tự là : SW0, SW1, SW2, SW3 kết nối với chân tương ứng của chip là : L13,
L14, H18, N17 của chip FPGA. Để ý: đây là các chân ngõ vào của FPGA. Trên Chip chỉ có 232 chân I/O tùy
chọn. Khi các nút SWx (x =0,3) ON (bật lên) thì chân FPGA tương ứng ở mức cao (3.3V) và ngược lại.
(hình)




4 nút nhấn (hình 2-3) theo thứ tự là BTN_EAST (phải), BTN_NORTH ( trên), BTN_SOUTH (dưới), BTN_WEST (trái)
kết nối tương ứng với các chân H13, K14, V17, D18 , là các chân input của FPGA.
Khi nhấn các nút trên thì chân tương ứng với nó sẽ lên mức cao. Khi không nhấn, cần dùng 1 điện trở nội
pull-down để tạo mức thấp. (bắt buộc).
Nút Encoder : có 3 ngõ ra: ROT_A, ROT_B, ROT_CENTER : nối với chân K18, G18, V16 của FPGA. Nút Encoder có
2 chức năng : Như nút nhấn : nhấn xuống sẽ đưa chân V16 của FPGA lên mức cao. Xoay phải (hay trái) sẽ tạo
xung encoder ngõ ra tương ứng (hình 2-8). Cả 3 chân ngõ ra của encoder điều cần dùng điện trở pull-up nội.




8 Led (góc dưới cùng bên phải) LD0, …, LD7 nối với 8 chân tương ứng F9, E9, D11, C11, F11, E11, E12,
F12 của FPGA. Đầu còn lại của các Led nối với GND thông qua điện trở 290 ohm. (hình 2-10).




V. CẤP NGUỒN

Tất cả các chân của FPGA điều có 2 lựa chọn nguồn cấp 2.5 v hoặc 3.3V thông qua jumper JP9. (cắm bên trái
2.5 V, cắm bên phải 3.3 V).

VI. CẤU HÌNH FPGA.

Có 4 cách để nạp chương trình cho FPGA (hình 4-1).
   1. Nạp trực tiếp vào FPGA thông qua cổng JTAG hay cổng USB.
   2. Nạp vào Platform Flash PROM XCF04S (4Mbit), rồi cấu hình cho FPGA ở chế độ Master Serial
       Mode.
   3. Nạp vào serial Flash PROM ST Microelectronics (16 Mbit), rồi cấu hình cho FPGA ở chế độ SPI
       Mode.
   4. Nạp vào StrataFlash parallel PROM Intel (128 Mbit), rồi cấu hình cho FPGA ở chế độ BPI Up
       Mode hay BPI Down Mode.
Để thiết lập các chế nạp cho FPGA, ta set jumper JP 30 như bảng 4-1. Mỗi lần thay đổi chế độ cấu hình phải
nhấn nút PROG (hình) để restart lại cấu hình.
1. Nạp trực tiếp vào FPGA thông qua cổng JTAG hay cổng USB.
Set Jumper như bảng 4-1 trên. Mở Tool iMPACT rồi nạp bình thường như với CPLD. Nếu dùng cổng USB
sẽ có cảnh báo:
Chọn OK, rồi nạp bình thường (file có đuôi .bit).




Để ý: Chương trình cấu hình cho FPGA bị mất khi cắt nguồn.

   2. Nạp vào Platform Flash PROM XCF04S (4Mbit), rồi cấu hình cho FPGA ở chế độ
      Master Serial Mode.
Đây là PROM cấu hình của xilinx. PROM này sẽ giữ cấu hình của FPGA nên khi cắt nguồn , file cấu hình sẽ
không bị mất. Thực hiện:
Set Jumper như bảng 4-1 trên. Cắm cổng USB. Cài drive nếu máy (window) yêu cầu.
    a. Tạo file bitstream (.bit) cho FPGA :
Click phải vào Generator Programming File, chọn Properties (hình 4-10).




Chọn Configuration Options, chọn Configuration Rate là 25 (để tốc độ nạp vào PROM là nhanh nhất 25
MHz). Cuối cùng nhấn OK để hoàn tất lựa chọn (hình 4-11).
Click đúp vào Generate Programming File để tạo file .bit. (hình 4-12).




   b. Tạo file cấu hình cho PROM

File để nạp cho FPGA là .bit, file để nạp vào Flash PROM XCF04S của là .mcs. Do đó file .mcs được được
tạo ra từ file .bit đã tạo được ở bước a. Thực hiện:
Click đúp vào Generate PROM, ACE, or JTAG File để khởi động chương trình iMPACT (hình 4-13).




Click đúp vào PROM File Formatter (hình 4-14).




Phần target PROM type chọn Xilinx PROM.
Phần PROM File Formats chọn MCS. (chọn định dạng khác cũng được, nhưng MCS là phổ biến).
Phần PROM File Name đặt tên cho file nạp vào PROM. (hình 4 -15).
Tiếp tục click Next, chọn xcf04s.
Click Add, rồi click Next và Finish để hoàn tất lựa chọn.
Chương trình sẽ hỏi file .bit , chọn file .bit rồi click OK.
Tiếp tục click NO rồi OK để bắt đầu format và config PROM (hình 4-18).
Kết quả sẽ như hình 4-19. Giá trị % ở PROM là dung lượng file so với tổng dung lượng của PROM.




Để tạo file thật sự cho PROM ta chọn : Operations -> Generate File (hình 4-20).
Đến đây đã hoàn tất việc tạo file cấu hình cho PROM (hình 4-21).




   C. Nạp Chương Trình Vào PROM

Ở bước a và b đã tạo ra các file cần thiết cho việc cấu hình FPGA. Bước này là nạp file cấu hình vào PROM.
Trong cửa sổ iMPACT, chọn Boundary Scan (hình 4-22).
Gán file PROM vào XCF04S bằng cách click phải vào biểu tượng của XCF04S và chọn Assign New
   Configuration File, chọn file PROM được tạo ở bước trên rồi click OK (hình 4-23).




Tiếp tục click phải vào biểu tượng của XCF04S và chọn Program (hình 4-24).
Chương trình sẽ hỏi kiểu PROM mà ta cần nạp vào, lựa chọn XCF04S và click OK (hình 4-25).




Trước khi nạp vào PROM ta nên thêm tùy chọn sau:
Đánh chéo (check) vào các ô: Erase Before Programming, Verify, Load FPGA rồi click OK (hình 4-26).




Cuối cùng click OK để hoàn thành. Quá trình nạp vào PROM và cấu hình lại FPGA sẽ được thực hiện và
chương trình sẽ cho biết quá trình nạp có thành công hay không. Nếu không chéo vào ô Load FPGA (hình
4-26) thì phải nhấn nút PROG_B (hình 4-2) để reset lại cấu hình cho FPGA. Nếu thành công led DONE
(hình 4-2) sẽ sáng.
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
Hai cách nạp còn lại thực hiện phức tạp hơn, soạn sau.

VII. Tổng Quan Cấu Trúc SPARTAN - 3E

Các thành phần:

   -   Input/Output Blocks (IOBs) : các khối vào ra
   -   Configurable Logic Blocks (CLBs) : được cấu tạo từ Look-Up Tables (LUTs).
   -   Block RAM : Hỗ trợ 16 Kb RAM trên mỗi Block RAM, số lượng các Block RAM tùy thuộc vào mỗi
       chip , với XC3S500E có 20 Block RAM.
   -   Multiplier Blocks : Khối nhân 2 lối vào 18 bit.
   -   Digital Clock Manager (DCM) Blocks : khối điều khiển xung clk.
   -   Interconnect : Các kết nối.

VII.1. Input/Output Blocks (IOBs) : các khối vào ra

Bao gồm các khối vào ra 2 chiều I/O và các khối ngõ vào input path (không thể làm ngõ ra). Ngõ vào là một
khối chức năng có tác dụng làm trì hoãn tín hiệu vào trước khi nó được đưa vào các khối bên trong. Cũng có
thể thiết lập sự trì hoãn cho các ngõ I/O. Ta có thể không dùng chức năng trì hoãn này.
Sau khi cấu hình cho FPGA, các chân không sử dụng, theo mặc định được thiết lập thành ngõ vào với một
điện trở nội pull-down.
Cấp nguồn cho IOBs :
VCCO : Cấp nguồn cho ngõ ra, tức điện thế ngõ ra sẽ bằng với VCCO. Khoảng 3.3 V
VCCINT : Cấp nguồn cho các khối bên trong FPGA. Khoảng 1.2 V.
VCCAUX : Nguồn hỗ trợ. Ít quan trọng. Khoảng 2.5 V.




VII.2. Configurable Logic Blocks (CLBs) : Khối Chức Năng Logic

Khối này thực hiện các chức năng logic và lưu trữ. Mỗi CLBs có 8 bảng tìm kiếm LUTs (Look-Up Table) và
8 phần tử nhớ. LUTs là một khối có chức năng thực hiện các biểu thức logic, ngoài ra mỗi LUTs có thể cấu
hình thành một RAM 16 bit hay một thanh ghi 16 bit. Phần tử nhớ là một khối mà có thể chỉ định để trở thành
một Flip-Flop hay latch.
XC3S500E có 1164 CLBs. Tương ứng với 9312 LUTs và 9312 Flip-Flop.
Logic Cell : Mỗi một LUTs kết hợp với một phần phần tử nhớ gọi là một “Logic Cell”.
XC3S500E có 10476 Logic Cell (hình 14).




VII.3. Block RAM : Khối Nhớ

Các LUTs ở phần CLBs (VII.2) có thể cấu hình như RAM, nhưng RAM này thường dùng như một bộ buffer
dữ liệu, trong khi các Block RAM thường dùng cho việc chứa dữ liệu có kích thước lớn hơn.
XC3S500E có chứa 20 Block RAM. Mỗi Block RAM có thể chứa 18 Kbit data (hình 1).




VII.4. Dedicated Multipliers : Bộ Nhân Chuyên Dụng

Các bộ nhân được đặt cùng với các Block RAM thành một khối. Bô nhân hỗ trợ 2 ngõ vào 18 bit và ngõ ra 36
bit. Có thể ghép chồng (cascade) các bộ nhân để tăng số ngõ vào (hình 36).
VII.5. Digital Clock Managers (DCMs) : Bộ Quản Lí Xung Clock

Bộ quản lí xung clock là một khối có 3 chức năng chính (hình 40):
    - Loại bỏ sự lệch xung clock (Clock-skew Elimination): Giúp tăng tốc độ chuyển mạch.
    - Tổng hợp tần số (Frequency Synthesis): Giúp thay đổi tần số ở ngõ ra xung clock.
Qui tắc thực hiện:
                                                 Integer _1
                              CLK OUT = CLK IN *
                                                 Integer _ 2
Trong đó CLKOUT là clock ra, CLKIN là clock vào, Integer_1 là tùy chọn từ 2 tới 32, Integer_2 là tùy chọn từ
1 tới 32.

   -   Dịch Pha (Phase Shifting) : Giúp thay đổi pha clock.

XC3S500E có:
  - 16 ngõ vào clock toàn cục GCLK0 – GCLK 15 đặt ở phía trên và dưới của FPGA.
  - 8 ngõ vào clock phía phải RHCLK0 – RHCLK7.
  - 8 ngõ vào clock phía trái RLCLK0 – RLCLK7.
VII.6. Interconnect : Các Kết Nối

Cung cấp các đường (segment) kết nối, các ma trận chuyển mạch (switch matrix) để tạo thành một mạng các
đường tín hiệu giúp kết nối các IOBs, CLBs, DCMs và block RAM lại với nhau (hình 48).




VIII. SƠ LƯỢT VỀ ISE Webpack 9.1 i

VIII.1. Tạo Một Project:

Vào Start > All Programs > Xilinx ISE 9.1i > Project Navigator để khởi động chương trình. Vào File >
New Project cửa sổ hướng dẫn hiện ra :
Project Name: Đặt tên project.
Project location : Nơi chứa project.
Click Next, cửa sổ mới hiện ra.




Ô Family : chọn Spartan3E .
Ô Device : chọn XC3S500E.
Ô Package : chọn FG320.
Tiếp tục click Next , cửa mới hiện ra, chọn thanh : New Source.
Cửa sổ mới hiện ra, chọn VHDL Module để viết code vhdl, nếu viết bằng verilog thì chọn : Verilog
Module.




Chọn tên file vhdl ở ô File name. (ở đây ta đang tạo bộ đếm nên chọn tên là counter).
Tiếp tục click Next . Cửa sổ mới hiện ra , ta sẽ chọn giao diện cho vào ra cho khối counter:
Cột Port Name để chọn tên cổng
Cột Direction để chọn chân là lối vào, lối ra hay cả hai vào/ra
Cột Bus : nếu dùng bus thì tréo vào ô này. Ở đây, bộ đếm của ta có ngõ ra là một port 4 bit nên ta tréo ô này.




Tiếp tục click Next -> Next -> Finish.
Xuất hiện cửa sổ thông báo tổng quan về cái project của mình.
Nên bỏ nó đi, ta sẽ ra cái này:




Đến đây ta đã tạo ra một project có tên thavali và trong project này có chứa một file vhdl tên là counter. ( sau
này chúng ta cần add thêm một số file khác nữa vào project).
Công việc tiếp theo là viết code vhdl .
Đoạn code cho bộ counter sẽ như sau: (coppy và bỏ vào cửa sổ soạn thảo).

library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;
-- Uncomment the following library declaration if instantiating
-- any Xilinx primitive in this code.
--library UNISIM;
--use UNISIM.VComponents.all;
entity counter is
Port ( CLOCK : in STD_LOGIC;
DIRECTION : in STD_LOGIC;
COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0));
end counter;
architecture Behavioral of counter is
signal count_int : std_logic_vector(3 downto 0) := "0000";
begin
process (CLOCK)
begin
if CLOCK='1' and CLOCK'event then
if DIRECTION='1' then
count_int <= count_int + 1;
else
count_int <= count_int - 1;
end if;
end if;
end process;
COUNT_OUT <= count_int;
end Behavioral;
Ta được kết quả sau:




Tới đây ta có thể tổng hợp (synthesis) được rồi. Tuy nhiên ta cần mô phỏng kết quả để kiểm tra hoạt động của
mạch. Do đó ta cần tạo file mô phỏng (test bench wave form). Ta làm như sau:
Chọn Project –> New source




Sẽ xuất hiện lại cửa sổ sau:
Chọn Test Bench WaveForm, đặt tên cho file là test (file này trong project có đuôi là .tbw) .
Tiếp tục click Next -> Next -> Finish. Sẽ ra cửa sổ như sau:




Đây là cửa sổ để ta thiết lập các giá trị khởi tạo cho việc mô phỏng.
Ở ô Clock Information chọn kiểu mạch mà ta muốn mô phỏng. Mạch ta tạo ra là một bộ đếm, là mạch tuần
tự có một xung clock nên chọn Single Clock. Nếu là mạch tổ hợp ta chọn combinatorial.
Các tham số khác cũng đã được giải thích ngay trong ảnh.
Click Finish để hoàn tất lựa chọn. Ta được cửa sổ sau:




Click vào dòng tín hiệu ngõ vào DIRECTION để có thể thay đổi dạng sóng của nó (click vào các chấm xanh
da trời). Tất cả các tín hiệu ngõ vào điều có thể thay đổi theo ý, còn ngõ ra thì không ( điều hiển nhiên).




Click File -> Save để lưu tùy chọn dạng sóng.
Bây giờ quay lại cửa sổ sources window để tổng hợp và chạy mô phỏng.
Xem kết quả mô phỏng:
Trong cửa sổ Sources Window chọn :
Behavioral Simulation
Trong cửa sổ mới chọn test.tbw. Trong ô Processes click đúp vào Simulate Behavioral Model và chờ một
lát.




Kết quả sẽ xuất hiện của sổ thể hiện kết quả mô phỏng.




Đến đây ta đã hoàn thành việc mô phỏng, như vậy trong Project của ta lúc này có thêm một file nữa là
test.tbw.
Bây giờ ta sẽ thực hiện các ràng buộc (Constraints), gán chân (Assigning Pin), tổng hợp (Synthesis) và nạp
vào chip FPGA .
Trước hết là tạo các ràng buộc.
Quay lại cửa sổ Sources Window chọn Synthesis/ Implement Design và chọn counter-behavioral.
Trong cửa sổ processes click vào dấu + ở dòng User Constraints .
Click đúp vào Create Timing Constraints sẽ xuất hiện thông báo yêu cầu thêm file .UCF vào project, đương
nhiên ta đồng ý (chọn YES ).




Cửa sổ mới xuất hiện:
Phía dưới cửa sổ chọn Global, phía trên chọn CLOCK rồi click vào nút      (ở dưới chữ window).
Sẽ xuất hiện cửa sổ mới, chọn các giá trị như hình.
40 ns : chu kì clock.
50 % : cycle duty.
Click OK để hoàn thành lựa chọn.
Tiếp tục click vào biểu tượng      để thiết lập pad to setup.
 pad to setup là thời gian tối ta mà dữ liệu phải đặt vào chân ngõ vào của chip trước khi có xung clock. Tức là
ta phải có dữ liệu ở chân ngõ vào một khoảng thời gian trước khi có xung clock.




Ta chọn các thông số cho pad to setup như hình liền dưới, rồi click OK.




Tiếp tục click vào biểu tượng      để thiết lập thông số Clock to Pad .
Clock to Pad là thời gian tối thiểu để dữ liệu ở ngõ vào được đưa tới ngõ ra sau khi có cạnh (lên hay xuống)
của xung clock.
Cửa sổ xuất hiện, ta chọn các thông số như hình liền dưới rồi click OK.




Cuối cùng ta được kết quả như hình sau:




Chọn File -> Save để lưu kết quả lại.
Ta cũng có thể đóng luôn cửa sổ Constraints Editor lại.
Như vậy ta đã tạo xong các ràng buộc (Constraints).
Việc tiếp theo là gán chân (Assigning Pin).
Bây giờ quay trở lại cửa sổ chương trình chính ISE.
Click đúp vào Assign Package Pins cửa sổ mới hiện ra, chọn thanh Package View ở phía dưới.




Dùng chuột kéo các tín hiệu của bộ counter của cửa sổ Design Object List (ở bên trái) rồi thả vào các chân
của FPGA (bên phải).
Bỏ CLOCK vào chân U10.             (đây là chân cấp clock cho FPGA)
Bỏ DIRECTION vào chân U1.          (chân input của FPGA)
Bỏ COUNT_OUT(0) vào chân T12. (chân I/O của FPGA)
Bỏ COUNT_OUT(1) vào chân R12. (chân I/O của FPGA)
Bỏ COUNT_OUT(2) vào chân R11. (chân I/O của FPGA)
Bỏ COUNT_OUT(3) vào chân R10. (chân I/O của FPGA)

Kết quả ta được như sau:
Click File -> Save -> OK để hoàn thành việc gán chân.
Ta có thể đóng cửa sổ của PACE editor lại.
Tới đây ta đã hoàn thành công việc gán chân.
Tiếp theo là tổng hợp (synthesis).
Thực ra trong quá trình mô phỏng thì quá trình tổng hợp đã xảy ra rồi. Thực ra, nếu bạn chỉ mô phỏng không
thôi thì tổng hợp sẽ là công việc đầu tiên và không cần các bước ràng buộc (Constraints), gán chân
(Assigning Pin) gì cả. Do đó bước này phải gọi là: Map, Place and Route mới đúng.
Trở về chương trình chính ISE, ở cửa sổ processes click vào Implement Design.
Như vậy bạn đã xong công việc place and route.




Bạn cũng có thể xem mạch được tổng hợp như thế nào bằng cách:
Trong cửa sổ Processes, chọn synthesize -> View Technology Schematic (mức cổng).
hay: synthesize -> View RTL Schematic (mức thanh ghi).




Bước cuối cùng là nạp chương trình cho FPGA, phần này đã trình bày ở mục VI.

Chú ý:
  - Board Spartan 3E còn nhiều thành phần nữa mà tôi chưa trình bày kịp, bạn nào có thể thì xin bổ sung
       để tài liệu thêm đầy đủ.
  - Phần trình bày trên chỉ là sơ lượt về ISE, còn nhiều phần nữa, nhưng vì trình độ và thời gian nên chưa
       thể soạn được.
  - Tài liệu này có thể có những sai sót, nên các bạn có thể sửa chữa tùy ý   .
IX. PHẦN NÀY DÀNH CHO QUẢNG CÁO.

Chuẩn bị ra trường (wow, may quá). Tui rất thích công việc liên quan tới FPGA, vi điều khiển (8051 hay
AVR, còn PIC thì chưa biết) .v.v. Có bác nào muốn tuyển dụng tui xin liên hệ:
Mail: thaphymat@walla.com

Xin vui lòng giới thiệu về bạn hay công ty của bạn. Xin cảm ơn.

                                                                             HCM, ngày 27-07-2007.
                                                                                            thavali
Micron DDR RAM
                                MT46V32M16

I. SƠ ĐỒ CHÂN VÀ CẤU TRÚC
a. Sơ Đồ Chân




VDD, VDDQ : cấp nguồn 2.5 v.
VSS, VSSQ : nối GND.
NC, DNU : Không sử dụng.
b. Cấu Trúc




MT46V32M16 (Gọi tắt là DRAM) có dung lượng 64 Mbyte. Bộ nhớ được phân chia thành 4 bank. Mỗi bank
là 16 Mbyte với giao diện : 8Meg x16 bit (meg = mega). DRAM có có cấu trúc kiểu lưới (grid) mà mỗi vị trí
của một ô nhớ (1 word) được xác định dựa vào địa chỉ bank (Bank address), địa chỉ dòng (row address) và địa
chỉ cột (column address). MT46V32M16 có 8K địa chỉ dòng, 1K địa chỉ cột và 4 bank. Việc truy xuất DRAM
được thực hiện bằng cách dùng các nhóm tín hiệu: Điều khiển, địa chỉ và dữ liệu.
a. Nhóm tín hiệu điều khiển bao gồm:
- CKE : clock enable.
- CK,CK# : cặp xung clock (differential clock).
- CS# : Chip select.
- WE#
- CAS#
- RAS#
b. Nhóm tín hiệu địa chỉ: A0 – A12 : chỉ định địa chỉ dòng hay cột.
                          BA0 – BA1: chỉ định địa chỉ bank.
c. Nhóm tín hiệu dữ liệu: DQ0 – DQ15: bus dữ liệu.
                        LDQS, UDQS: dò dữ liệu (data strobe)
                         LDM, UDM : data mask.

II. HOẠT ĐỘNG

Truy xuất DRAM được thực hiện theo từng chuỗi dữ liệu có hướng (oriented data burst). Chiều dài của
chuỗi có thể tùy chọn từ 2, 4, 8 từ nhớ (word). Để thực hiện điều này ta gởi đi các lệnh điều khiển thông qua
các tín hiệu điều khiển. Cụ thể, quá trình truy xuất DRAM được thực hiện như sau:
    1. Chuyển DRAM vào trạng thái nghỉ.
    2. Gởi đi lệnh ACTIVE để kích hoạt dòng (tức địa chỉ dòng).
    3. Gởi lệnh read hay write để đọc hay ghi vào DRAM.
    4. Gởi lệnh precharge để kết thúc đọc hay ghi một chuỗi và chuẩn bị đọc/ghi chuỗi khác.
Đây chỉ là các bước chính, về chi tiết các DRAM khác nhau có cách truy xuất khác nhau.

- Các lệnh (command) được gởi đi khi cạnh lên (rising) của CLK giao với CLK# .




    -   Dữ liệu được gởi đi ở cả hai cạnh của CLK.

III. TẬP LỆNH

Dựa vào các tín hiệu điều khiển ta có thể gởi tới DRAM các lệnh sau (bảng III.1):

NOP : không làm gì.
DESELECT : không làm gì.
ACTIVE: Lựa chọn (kích hoạt) bank và dòng.
READ : Chọn bank và cột để đọc chuỗi (burst).
WRITE: Chọn bank và cột để ghi chuỗi (burst).
PRECHARGE (PRE): Ngừng kích hoạt dòng trong một bank hay tất cả các bank.
LOAD MODE REGISTER (LMR): chọn chế độ hoạt động cho DRAM.
AUTO REFRESH (AR): Tự làm tươi.
BURST TERMINATE (BST): Chấm dứt (bằng cách cắt ngang) quá trình đọc một burst.


Bảng III.1




Quá trình truy xuất DRAM có liên quan tới các tham số chính như sau:

   -   tCAS (CAS latency) : là thời gian trì hoãn (tính bằng số chu kì xung clock) tính từ lúc truy xuất cột cho
       đến khi bit dữ liệu đầu tiên xuất hiện ở ngõ ra.
   -   tRCD (RAS to CAS delay) : là thời gian trì hoãn từ lúc một dòng (row) được kích hoạt cho đến khi một
       cột (column) tương ứng được kích hoạt.
   -   tRP (RAS precharge) : là thời gian trì hoãn để kết thúc truy xuất một dòng và bắt đầu truy xuất một
       dòng khác.
   -   tRAS (RAS latency): thời gian trì hoãn giữa lệnh lệnh PRECHARGE và ACTIVE, do dòng chỉ cần
       kích hoạt một lần trong suốt thời gian truy xuất một chuỗi dữ liệu nên, nói chung, thông số tRAS ít
       quan trọng.
   -   Burst length: chiều dài của chuỗi dữ liệu trong một lần truy xuất. Có thể 2, 4, 8 word.
   -   Burst type: thứ tự sắp xếp các word trong một burst.

   1. ĐỌC DRAM

Để đọc DRAM, trước hết ta cấu hình chế độ hoạt động cho DRAM bằng cách dùng lệnh LMR, lệnh này chỉ
được phát ra khi DRAM ở chế độ nghỉ (idle).
Có nhiều chế độ hoạt động của DRAM. Phần trình bày sau là cách đọc DRAM với các tham số như sau:
   - DRAM hoạt động ở chế độ bình thường
Bằng cách thiết lập A7 – A10 = {0, 0, 0, 0}.
   - Chế độ thanh ghi cơ bản.
Bằng cách thiết lập BA0, BA1 = {0, 0}.
   - Burst length = 4.
Bằng cách thiết lập A0, A1, A2 = {0, 1, 0}.
   - Burst type = tuần tự (sequential).
Bằng cách thiết lập A3 = 0.
   - CAS Latency = 2.
Bằng cách thiết lập A4, A5, A6 = {0, 1, 0}.

Cuối cùng ta gởi đi lệnh LMR để bắt đầu cấu hình, bằng cách cho CS#, WE#, CAS#, RAS# = {0,0,0,0}.

Các lựa chọn cấu hình khác có thể dựa vào bảng III.2.
       Cần để ý là tất cả các lệnh (command) chỉ có thể gởi đi ở vị trí giao nhau của cạnh lên xung CLK và
cạnh xuống xung CLK#. Còn dữ liệu thì được truyền ở cả hai cạnh của CLK, do đó tốc độ truy xuất dữ liệu
nhanh gấp đôi tốc độ CLK (DDR = Double data rate).
Thông số CAS Latency khá quan trọng vì nó ảnh hưởng đến việc lựa chọn tốc độ xung clock. Với CAS
Latency =2 thì tốc độ xung clock tối đa là CLK = 133 MHz. Ở CAS Latency = 3 thì tốc độ xung clock tối đa
là CLK = 200 MHz. Như vậy nếu như chọn CAS Latency = 3 thì tốc độ truy xuất dữ liệu của DRAM là 400
MHz. Trong thực tế, tốc độ có thể chậm hơn vì cần tốn thời gian để truyền đi các lệnh trước khi dữ liệu được
truy xuất. Tuy nhiên, nếu quá trình truy xuất là một chiều (chỉ đọc hoặc ghi) thì tốc độ có thể lên đến 400
MHz bằng cách gởi đi các lệnh theo một chu kì thích hợp (xem chi tiết bên dưới ).


Bảng III.2
- Sau khi lệnh cấu hình LMR được gởi đi, thì lệnh kế tiếp là ACTIVE, lệnh ACTIVE thực chất là lệnh
   kích hoạt dòng (row) và bank, nơi mà ta cần truy xuất dữ liệu. Các thông số đi kèm với lệnh ACTIVE là
   địa chỉ bank (thông qua các tín hiệu BA0, BA1) và địa chỉ cột (thông qua các tín hiệu A0 – A12 ).
   - Cuối cùng lệnh READ có thể được gởi đi để đọc hay ghi dữ liệu. Các thông số đi kèm với lệnh READ
   là địa chỉ bank (thông qua các tín hiệu BA0, BA1) và địa chỉ cột (thông qua các tín hiệu A0 – A9). Tín
   hiệu A10 dùng để lựa chọn chức năng AutoPrecharge, nếu chọn chức năng này, sau khi đọc xong chuỗi
   dữ liệu (data burst), thì tất cả các dòng của bank tương ứng với chuỗi này sẽ tự động ngưng kích hoạt
   (deactive). Ngược lại, nếu không chọn chức năng AutoPrecharge thì dòng vẫn mở. Sau một khoảng thời
   gian tRAS từ lúc lệnh READ được gởi đi, dữ liệu sẽ xất hiện ở ngõ ra.
   - Để xác định thời đểm bắt đầu của chuỗi dữ liệu (data burst) ở ngõ ra, người ta dùng tín hiệu dò DQS
   (data strobe), khi DRAM không được truy xuất, DQS ở trạng thái High_Z. Tín hiệu DQS sẽ từ High_Z
   xuống mức thấp để báo hiệu bắt đầu của chuỗi dữ liệu, DQS từ thấp chuyển thành High_Z để báo chầm
   dứt quá trình đọc dữ liệu. Hình III.1 là quá trình đọc dữ liệu với CAS latency = 2. Hình III.2 là quá trình
   đọc dữ liệu liên tục (CAS latency = 2) bằng cách gởi đi liên tiếp các lệnh READ cách nhau 2 chu kì CLK.
   Cách này giúp cho tốc độ truy xuất dữ liệu nhanh gấp đôi tốc độ CLK. Chiều cao lưng chừng của tín hiệu
   DQS ở cả hai hình III.1, III.2 để chỉ trạng thái High_Z.

Hình III.1




Hình III.2
2. GHI DRAM

More Related Content

What's hot

Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04Nhóc Nhóc
 
Chuong 04 mach logic
Chuong 04 mach logicChuong 04 mach logic
Chuong 04 mach logicAnh Ngoc Phan
 
Bai giang-vhdl
Bai giang-vhdlBai giang-vhdl
Bai giang-vhdlhoangclick
 
[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM
[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM
[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDMThe Nguyen Manh
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Sốviethung094
 
Đồ Thị Matlab
Đồ Thị Matlab Đồ Thị Matlab
Đồ Thị Matlab JoneCole
 
Chuong 05 transistor bjt
Chuong 05 transistor bjtChuong 05 transistor bjt
Chuong 05 transistor bjtJean Okio
 
lap trinh assembly cho VXL
lap trinh  assembly cho VXLlap trinh  assembly cho VXL
lap trinh assembly cho VXLThân Khương
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử líHong Phuoc Nguyen
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Vũ Anh
 
Chuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va phoChuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va phothanhyu
 
Quy Trình Chế Tạo Mos & Bipolar Trasistor
Quy Trình Chế Tạo Mos & Bipolar TrasistorQuy Trình Chế Tạo Mos & Bipolar Trasistor
Quy Trình Chế Tạo Mos & Bipolar TrasistorDang Dao
 
Truyen song-va-anten
Truyen song-va-antenTruyen song-va-anten
Truyen song-va-antenĐỗ Kiệt
 

What's hot (20)

Lttt b11
Lttt b11Lttt b11
Lttt b11
 
Do thi-smith-chart
Do thi-smith-chartDo thi-smith-chart
Do thi-smith-chart
 
Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04
 
Chuong 04 mach logic
Chuong 04 mach logicChuong 04 mach logic
Chuong 04 mach logic
 
Xử lý tín hiệu số
Xử lý tín hiệu sốXử lý tín hiệu số
Xử lý tín hiệu số
 
Bai giang-vhdl
Bai giang-vhdlBai giang-vhdl
Bai giang-vhdl
 
[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM
[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM
[Báo cáo] Bài tập lớn Thông tin số: MIMO OFDM
 
Bài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu SốBài Tập Xử Lí Tín Hiệu Số
Bài Tập Xử Lí Tín Hiệu Số
 
Chuong 05 flip flop
Chuong 05 flip flopChuong 05 flip flop
Chuong 05 flip flop
 
Đồ Thị Matlab
Đồ Thị Matlab Đồ Thị Matlab
Đồ Thị Matlab
 
Kỹ thuật số
Kỹ thuật sốKỹ thuật số
Kỹ thuật số
 
Chuong 05 transistor bjt
Chuong 05 transistor bjtChuong 05 transistor bjt
Chuong 05 transistor bjt
 
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PIDĐề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
Đề tài: Hệ thống điều khiển tốc độ động cơ DC sử dụng bộ PID
 
lap trinh assembly cho VXL
lap trinh  assembly cho VXLlap trinh  assembly cho VXL
lap trinh assembly cho VXL
 
[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí[Cntt] bài giảng kĩ thuật vi xử lí
[Cntt] bài giảng kĩ thuật vi xử lí
 
Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520Tai lieu tra_cuu_pic 18f4520
Tai lieu tra_cuu_pic 18f4520
 
Chuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va phoChuong 4.1 tin hieu va pho
Chuong 4.1 tin hieu va pho
 
Quy Trình Chế Tạo Mos & Bipolar Trasistor
Quy Trình Chế Tạo Mos & Bipolar TrasistorQuy Trình Chế Tạo Mos & Bipolar Trasistor
Quy Trình Chế Tạo Mos & Bipolar Trasistor
 
Truyen song-va-anten
Truyen song-va-antenTruyen song-va-anten
Truyen song-va-anten
 
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PICĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
ĐỒ ÁN TỐT NGHIỆP LẬP TRÌNH VDK PIC
 

Similar to Spartan 3e-vietnamese

Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thư Viện Số
 
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thuTailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thuTrần Đức Anh
 
Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951Ngananh Saodem
 
Mitsubishi
MitsubishiMitsubishi
Mitsubishiddungd4
 
PLC mitsubishi
PLC mitsubishiPLC mitsubishi
PLC mitsubishiquanglocbp
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picCu Bi
 
datasheet.pdf
datasheet.pdfdatasheet.pdf
datasheet.pdfDuyL84058
 
Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921Pham Hoang
 
Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Ky Nguyen Ad
 
Bai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautrucBai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautrucmster_dang
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avranhhoi12345
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vnbibibobo2007
 
Chuong 2 gioi thieu ve cau truc ho vdk 8051
Chuong 2 gioi thieu ve cau truc ho vdk 8051Chuong 2 gioi thieu ve cau truc ho vdk 8051
Chuong 2 gioi thieu ve cau truc ho vdk 8051Bút Chì
 
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...Vuong Nguyen
 
Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03Huynh MVT
 
Giáo trình plc omron cp1 l 1h [unlockplc.com]
Giáo trình plc omron cp1 l 1h [unlockplc.com]Giáo trình plc omron cp1 l 1h [unlockplc.com]
Giáo trình plc omron cp1 l 1h [unlockplc.com]Nguyễn Hồng Nhân
 

Similar to Spartan 3e-vietnamese (20)

Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
Thiết kế đồng hồ thời gian thực sử dụng DS1307, hiển thị trên 6 Led 7 thanh v...
 
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thuTailieu.vncty.com   thiet-ke-dong-ho-thoi-gian-thu
Tailieu.vncty.com thiet-ke-dong-ho-thoi-gian-thu
 
Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951Tổng quan Vi điều khiển - Chức năng các chân 8951
Tổng quan Vi điều khiển - Chức năng các chân 8951
 
Đề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOT
Đề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOTĐề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOT
Đề tài: Dòng PLC hoạt động vô cùng hiệu quả công việc, HOT
 
Mitsubishi
MitsubishiMitsubishi
Mitsubishi
 
PLC mitsubishi
PLC mitsubishiPLC mitsubishi
PLC mitsubishi
 
Gioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-picGioi thieu-ve-vi-dieu-khien-pic
Gioi thieu-ve-vi-dieu-khien-pic
 
datasheet.pdf
datasheet.pdfdatasheet.pdf
datasheet.pdf
 
Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921Điều khiển động cơ sử dụng IC MCP4921
Điều khiển động cơ sử dụng IC MCP4921
 
Nhóm-HM.docx
Nhóm-HM.docxNhóm-HM.docx
Nhóm-HM.docx
 
Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr Giáo trình vi điều khiển avr
Giáo trình vi điều khiển avr
 
Bai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautrucBai 001 vxl_pic_cautruc
Bai 001 vxl_pic_cautruc
 
418 giaotrinh avr
418 giaotrinh avr418 giaotrinh avr
418 giaotrinh avr
 
Giaotrinh avr tech24.vn
Giaotrinh avr tech24.vnGiaotrinh avr tech24.vn
Giaotrinh avr tech24.vn
 
Vi dieu khien_pic
Vi dieu khien_picVi dieu khien_pic
Vi dieu khien_pic
 
Chuong 2 gioi thieu ve cau truc ho vdk 8051
Chuong 2 gioi thieu ve cau truc ho vdk 8051Chuong 2 gioi thieu ve cau truc ho vdk 8051
Chuong 2 gioi thieu ve cau truc ho vdk 8051
 
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
Ac fr ogdyeeau50afg7bcxmtrplolcc9hoeu__6mus7monefoq946imlse7fvjnynphogvjyelfq...
 
Co ban ve msp430
Co ban ve msp430Co ban ve msp430
Co ban ve msp430
 
Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03Vxl ch03-8051-3.1 3.2-v03
Vxl ch03-8051-3.1 3.2-v03
 
Giáo trình plc omron cp1 l 1h [unlockplc.com]
Giáo trình plc omron cp1 l 1h [unlockplc.com]Giáo trình plc omron cp1 l 1h [unlockplc.com]
Giáo trình plc omron cp1 l 1h [unlockplc.com]
 

More from buianhminh

Bao cao truyen hinh
Bao cao truyen hinhBao cao truyen hinh
Bao cao truyen hinhbuianhminh
 
Báo cáo truyền hình
Báo cáo truyền hìnhBáo cáo truyền hình
Báo cáo truyền hìnhbuianhminh
 
Báo cáo chuyển mạch
Báo cáo chuyển mạchBáo cáo chuyển mạch
Báo cáo chuyển mạchbuianhminh
 
94257825 bao-cao-pld
94257825 bao-cao-pld94257825 bao-cao-pld
94257825 bao-cao-pldbuianhminh
 
Cong nghe fpga
Cong nghe fpgaCong nghe fpga
Cong nghe fpgabuianhminh
 
82954869 bai-giang-vhdl
82954869 bai-giang-vhdl82954869 bai-giang-vhdl
82954869 bai-giang-vhdlbuianhminh
 

More from buianhminh (6)

Bao cao truyen hinh
Bao cao truyen hinhBao cao truyen hinh
Bao cao truyen hinh
 
Báo cáo truyền hình
Báo cáo truyền hìnhBáo cáo truyền hình
Báo cáo truyền hình
 
Báo cáo chuyển mạch
Báo cáo chuyển mạchBáo cáo chuyển mạch
Báo cáo chuyển mạch
 
94257825 bao-cao-pld
94257825 bao-cao-pld94257825 bao-cao-pld
94257825 bao-cao-pld
 
Cong nghe fpga
Cong nghe fpgaCong nghe fpga
Cong nghe fpga
 
82954869 bai-giang-vhdl
82954869 bai-giang-vhdl82954869 bai-giang-vhdl
82954869 bai-giang-vhdl
 

Spartan 3e-vietnamese

  • 1. Spartan-3E Starter Kit Biên soạn: thavali ĐH Khoa Học Tự Nhiên TP.Hồ Chí Minh. I. CÁC THÀNH PHẦN CỦA KIT 1. Xilinx XC3S500E Spartan-3E FPGA : con chính của KIT 2. Xilinx 4 Mbit Platform Flash configuration PROM 3. Xilinx 64-macrocell XC2C64A CoolRunner CPLD 4. 64 MByte (512 Mbit) of DDR SDRAM, x16 data interface, 100+ MHz 5. 16 MByte (128 Mbit) of parallel NOR Flash (Intel StrataFlash) 6. 16 Mbits of SPI serial Flash (STMicro) 7. 2-line, 16-character LCD screen 8. PS/2 mouse or keyboard port 9. VGA display port 10. 10/100 Ethernet PHY (requires Ethernet MAC in FPGA) 11. Two 9-pin RS-232 ports (DTE- and DCE-style) 12. On-board USB-based FPGA/CPLD download/debug interface 13. 50 MHz clock oscillator 14. SHA-1 1-wire serial EEPROM for bitstream copy protection 15. Hirose FX2 expansion connector 16. Three Digilent 6-pin expansion connectors 17. Four-output, SPI-based Digital-to-Analog Converter (DAC) 18. Two-input, SPI-based Analog-to-Digital Converter (ADC) with programmable-gain 19. pre-amplifier 20. ChipScope™ SoftTouch debugging port 21. Rotary-encoder with push-button shaft 22. Eight discrete LEDs 23. Four slide switches II. SƠ ĐỒ CHÂN CỦA XC3S500E XC3S500E có kiểu chân BGA, 320 chân như hình: Cách đánh số chân: Vị trí của 1 chân được xác định theo qui tắc ma trận 2 chiều. Chiều ngang (dòng) là số từ 0 tới 18. Chiều dọc (cột) là chữ từ A tới V. Ví dụ: chân A1, là chân ở dòng A, cột 1. Đây là chân GND của FPGA. Tài nguyên: 10000 logic cells, có 232 chân I/O cho người dùng tự định nghĩa.
  • 2. III. BỘ TẠO DAO ĐỘNG TRÊN KIT Có 3 nguồn cập xung clk cho FPGA: 1. Dùng thạch anh có sẵn 50 MHz trên board. Ngõ ra của thạch anh nối với chân C9 của chip. 2. Cấp xung clk thông qua chân cắm 8 pin trên board (hình 3.1) Ngõ ra của thạch anh nối với chân B8 của chip. 3. Cấp Cấp xung clk thông qua chân cắm SMA, chân cắm này chỉ nhận clk từ máy phát clk, không dùng trực tiếp thạch anh được . Ngõ ra clk nối với chân A10 của chip.
  • 3. IV. CÁC NÚT CHUYỂN, NÚT NHẤN, LED 4 nút chuyển (hình 2-1) theo thứ tự là : SW0, SW1, SW2, SW3 kết nối với chân tương ứng của chip là : L13, L14, H18, N17 của chip FPGA. Để ý: đây là các chân ngõ vào của FPGA. Trên Chip chỉ có 232 chân I/O tùy chọn. Khi các nút SWx (x =0,3) ON (bật lên) thì chân FPGA tương ứng ở mức cao (3.3V) và ngược lại. (hình) 4 nút nhấn (hình 2-3) theo thứ tự là BTN_EAST (phải), BTN_NORTH ( trên), BTN_SOUTH (dưới), BTN_WEST (trái) kết nối tương ứng với các chân H13, K14, V17, D18 , là các chân input của FPGA. Khi nhấn các nút trên thì chân tương ứng với nó sẽ lên mức cao. Khi không nhấn, cần dùng 1 điện trở nội pull-down để tạo mức thấp. (bắt buộc).
  • 4. Nút Encoder : có 3 ngõ ra: ROT_A, ROT_B, ROT_CENTER : nối với chân K18, G18, V16 của FPGA. Nút Encoder có 2 chức năng : Như nút nhấn : nhấn xuống sẽ đưa chân V16 của FPGA lên mức cao. Xoay phải (hay trái) sẽ tạo xung encoder ngõ ra tương ứng (hình 2-8). Cả 3 chân ngõ ra của encoder điều cần dùng điện trở pull-up nội. 8 Led (góc dưới cùng bên phải) LD0, …, LD7 nối với 8 chân tương ứng F9, E9, D11, C11, F11, E11, E12, F12 của FPGA. Đầu còn lại của các Led nối với GND thông qua điện trở 290 ohm. (hình 2-10). V. CẤP NGUỒN Tất cả các chân của FPGA điều có 2 lựa chọn nguồn cấp 2.5 v hoặc 3.3V thông qua jumper JP9. (cắm bên trái 2.5 V, cắm bên phải 3.3 V). VI. CẤU HÌNH FPGA. Có 4 cách để nạp chương trình cho FPGA (hình 4-1). 1. Nạp trực tiếp vào FPGA thông qua cổng JTAG hay cổng USB. 2. Nạp vào Platform Flash PROM XCF04S (4Mbit), rồi cấu hình cho FPGA ở chế độ Master Serial Mode. 3. Nạp vào serial Flash PROM ST Microelectronics (16 Mbit), rồi cấu hình cho FPGA ở chế độ SPI Mode. 4. Nạp vào StrataFlash parallel PROM Intel (128 Mbit), rồi cấu hình cho FPGA ở chế độ BPI Up Mode hay BPI Down Mode.
  • 5. Để thiết lập các chế nạp cho FPGA, ta set jumper JP 30 như bảng 4-1. Mỗi lần thay đổi chế độ cấu hình phải nhấn nút PROG (hình) để restart lại cấu hình.
  • 6. 1. Nạp trực tiếp vào FPGA thông qua cổng JTAG hay cổng USB. Set Jumper như bảng 4-1 trên. Mở Tool iMPACT rồi nạp bình thường như với CPLD. Nếu dùng cổng USB sẽ có cảnh báo:
  • 7. Chọn OK, rồi nạp bình thường (file có đuôi .bit). Để ý: Chương trình cấu hình cho FPGA bị mất khi cắt nguồn. 2. Nạp vào Platform Flash PROM XCF04S (4Mbit), rồi cấu hình cho FPGA ở chế độ Master Serial Mode. Đây là PROM cấu hình của xilinx. PROM này sẽ giữ cấu hình của FPGA nên khi cắt nguồn , file cấu hình sẽ không bị mất. Thực hiện: Set Jumper như bảng 4-1 trên. Cắm cổng USB. Cài drive nếu máy (window) yêu cầu. a. Tạo file bitstream (.bit) cho FPGA : Click phải vào Generator Programming File, chọn Properties (hình 4-10). Chọn Configuration Options, chọn Configuration Rate là 25 (để tốc độ nạp vào PROM là nhanh nhất 25 MHz). Cuối cùng nhấn OK để hoàn tất lựa chọn (hình 4-11).
  • 8. Click đúp vào Generate Programming File để tạo file .bit. (hình 4-12). b. Tạo file cấu hình cho PROM File để nạp cho FPGA là .bit, file để nạp vào Flash PROM XCF04S của là .mcs. Do đó file .mcs được được tạo ra từ file .bit đã tạo được ở bước a. Thực hiện:
  • 9. Click đúp vào Generate PROM, ACE, or JTAG File để khởi động chương trình iMPACT (hình 4-13). Click đúp vào PROM File Formatter (hình 4-14). Phần target PROM type chọn Xilinx PROM. Phần PROM File Formats chọn MCS. (chọn định dạng khác cũng được, nhưng MCS là phổ biến). Phần PROM File Name đặt tên cho file nạp vào PROM. (hình 4 -15).
  • 10. Tiếp tục click Next, chọn xcf04s. Click Add, rồi click Next và Finish để hoàn tất lựa chọn. Chương trình sẽ hỏi file .bit , chọn file .bit rồi click OK. Tiếp tục click NO rồi OK để bắt đầu format và config PROM (hình 4-18).
  • 11. Kết quả sẽ như hình 4-19. Giá trị % ở PROM là dung lượng file so với tổng dung lượng của PROM. Để tạo file thật sự cho PROM ta chọn : Operations -> Generate File (hình 4-20).
  • 12. Đến đây đã hoàn tất việc tạo file cấu hình cho PROM (hình 4-21). C. Nạp Chương Trình Vào PROM Ở bước a và b đã tạo ra các file cần thiết cho việc cấu hình FPGA. Bước này là nạp file cấu hình vào PROM. Trong cửa sổ iMPACT, chọn Boundary Scan (hình 4-22).
  • 13. Gán file PROM vào XCF04S bằng cách click phải vào biểu tượng của XCF04S và chọn Assign New Configuration File, chọn file PROM được tạo ở bước trên rồi click OK (hình 4-23). Tiếp tục click phải vào biểu tượng của XCF04S và chọn Program (hình 4-24).
  • 14. Chương trình sẽ hỏi kiểu PROM mà ta cần nạp vào, lựa chọn XCF04S và click OK (hình 4-25). Trước khi nạp vào PROM ta nên thêm tùy chọn sau: Đánh chéo (check) vào các ô: Erase Before Programming, Verify, Load FPGA rồi click OK (hình 4-26). Cuối cùng click OK để hoàn thành. Quá trình nạp vào PROM và cấu hình lại FPGA sẽ được thực hiện và chương trình sẽ cho biết quá trình nạp có thành công hay không. Nếu không chéo vào ô Load FPGA (hình
  • 15. 4-26) thì phải nhấn nút PROG_B (hình 4-2) để reset lại cấu hình cho FPGA. Nếu thành công led DONE (hình 4-2) sẽ sáng. --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- Hai cách nạp còn lại thực hiện phức tạp hơn, soạn sau. VII. Tổng Quan Cấu Trúc SPARTAN - 3E Các thành phần: - Input/Output Blocks (IOBs) : các khối vào ra - Configurable Logic Blocks (CLBs) : được cấu tạo từ Look-Up Tables (LUTs). - Block RAM : Hỗ trợ 16 Kb RAM trên mỗi Block RAM, số lượng các Block RAM tùy thuộc vào mỗi chip , với XC3S500E có 20 Block RAM. - Multiplier Blocks : Khối nhân 2 lối vào 18 bit. - Digital Clock Manager (DCM) Blocks : khối điều khiển xung clk. - Interconnect : Các kết nối. VII.1. Input/Output Blocks (IOBs) : các khối vào ra Bao gồm các khối vào ra 2 chiều I/O và các khối ngõ vào input path (không thể làm ngõ ra). Ngõ vào là một khối chức năng có tác dụng làm trì hoãn tín hiệu vào trước khi nó được đưa vào các khối bên trong. Cũng có thể thiết lập sự trì hoãn cho các ngõ I/O. Ta có thể không dùng chức năng trì hoãn này. Sau khi cấu hình cho FPGA, các chân không sử dụng, theo mặc định được thiết lập thành ngõ vào với một điện trở nội pull-down. Cấp nguồn cho IOBs : VCCO : Cấp nguồn cho ngõ ra, tức điện thế ngõ ra sẽ bằng với VCCO. Khoảng 3.3 V VCCINT : Cấp nguồn cho các khối bên trong FPGA. Khoảng 1.2 V. VCCAUX : Nguồn hỗ trợ. Ít quan trọng. Khoảng 2.5 V. VII.2. Configurable Logic Blocks (CLBs) : Khối Chức Năng Logic Khối này thực hiện các chức năng logic và lưu trữ. Mỗi CLBs có 8 bảng tìm kiếm LUTs (Look-Up Table) và 8 phần tử nhớ. LUTs là một khối có chức năng thực hiện các biểu thức logic, ngoài ra mỗi LUTs có thể cấu hình thành một RAM 16 bit hay một thanh ghi 16 bit. Phần tử nhớ là một khối mà có thể chỉ định để trở thành một Flip-Flop hay latch. XC3S500E có 1164 CLBs. Tương ứng với 9312 LUTs và 9312 Flip-Flop. Logic Cell : Mỗi một LUTs kết hợp với một phần phần tử nhớ gọi là một “Logic Cell”.
  • 16. XC3S500E có 10476 Logic Cell (hình 14). VII.3. Block RAM : Khối Nhớ Các LUTs ở phần CLBs (VII.2) có thể cấu hình như RAM, nhưng RAM này thường dùng như một bộ buffer dữ liệu, trong khi các Block RAM thường dùng cho việc chứa dữ liệu có kích thước lớn hơn. XC3S500E có chứa 20 Block RAM. Mỗi Block RAM có thể chứa 18 Kbit data (hình 1). VII.4. Dedicated Multipliers : Bộ Nhân Chuyên Dụng Các bộ nhân được đặt cùng với các Block RAM thành một khối. Bô nhân hỗ trợ 2 ngõ vào 18 bit và ngõ ra 36 bit. Có thể ghép chồng (cascade) các bộ nhân để tăng số ngõ vào (hình 36).
  • 17. VII.5. Digital Clock Managers (DCMs) : Bộ Quản Lí Xung Clock Bộ quản lí xung clock là một khối có 3 chức năng chính (hình 40): - Loại bỏ sự lệch xung clock (Clock-skew Elimination): Giúp tăng tốc độ chuyển mạch. - Tổng hợp tần số (Frequency Synthesis): Giúp thay đổi tần số ở ngõ ra xung clock. Qui tắc thực hiện: Integer _1 CLK OUT = CLK IN * Integer _ 2 Trong đó CLKOUT là clock ra, CLKIN là clock vào, Integer_1 là tùy chọn từ 2 tới 32, Integer_2 là tùy chọn từ 1 tới 32. - Dịch Pha (Phase Shifting) : Giúp thay đổi pha clock. XC3S500E có: - 16 ngõ vào clock toàn cục GCLK0 – GCLK 15 đặt ở phía trên và dưới của FPGA. - 8 ngõ vào clock phía phải RHCLK0 – RHCLK7. - 8 ngõ vào clock phía trái RLCLK0 – RLCLK7.
  • 18. VII.6. Interconnect : Các Kết Nối Cung cấp các đường (segment) kết nối, các ma trận chuyển mạch (switch matrix) để tạo thành một mạng các đường tín hiệu giúp kết nối các IOBs, CLBs, DCMs và block RAM lại với nhau (hình 48). VIII. SƠ LƯỢT VỀ ISE Webpack 9.1 i VIII.1. Tạo Một Project: Vào Start > All Programs > Xilinx ISE 9.1i > Project Navigator để khởi động chương trình. Vào File > New Project cửa sổ hướng dẫn hiện ra :
  • 19. Project Name: Đặt tên project. Project location : Nơi chứa project. Click Next, cửa sổ mới hiện ra. Ô Family : chọn Spartan3E . Ô Device : chọn XC3S500E. Ô Package : chọn FG320. Tiếp tục click Next , cửa mới hiện ra, chọn thanh : New Source.
  • 20. Cửa sổ mới hiện ra, chọn VHDL Module để viết code vhdl, nếu viết bằng verilog thì chọn : Verilog Module. Chọn tên file vhdl ở ô File name. (ở đây ta đang tạo bộ đếm nên chọn tên là counter). Tiếp tục click Next . Cửa sổ mới hiện ra , ta sẽ chọn giao diện cho vào ra cho khối counter: Cột Port Name để chọn tên cổng Cột Direction để chọn chân là lối vào, lối ra hay cả hai vào/ra Cột Bus : nếu dùng bus thì tréo vào ô này. Ở đây, bộ đếm của ta có ngõ ra là một port 4 bit nên ta tréo ô này. Tiếp tục click Next -> Next -> Finish. Xuất hiện cửa sổ thông báo tổng quan về cái project của mình.
  • 21.
  • 22. Nên bỏ nó đi, ta sẽ ra cái này: Đến đây ta đã tạo ra một project có tên thavali và trong project này có chứa một file vhdl tên là counter. ( sau này chúng ta cần add thêm một số file khác nữa vào project). Công việc tiếp theo là viết code vhdl . Đoạn code cho bộ counter sẽ như sau: (coppy và bỏ vào cửa sổ soạn thảo). library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; -- Uncomment the following library declaration if instantiating -- any Xilinx primitive in this code. --library UNISIM; --use UNISIM.VComponents.all; entity counter is Port ( CLOCK : in STD_LOGIC; DIRECTION : in STD_LOGIC; COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0)); end counter; architecture Behavioral of counter is signal count_int : std_logic_vector(3 downto 0) := "0000"; begin process (CLOCK) begin if CLOCK='1' and CLOCK'event then if DIRECTION='1' then count_int <= count_int + 1; else count_int <= count_int - 1; end if; end if; end process; COUNT_OUT <= count_int; end Behavioral;
  • 23. Ta được kết quả sau: Tới đây ta có thể tổng hợp (synthesis) được rồi. Tuy nhiên ta cần mô phỏng kết quả để kiểm tra hoạt động của mạch. Do đó ta cần tạo file mô phỏng (test bench wave form). Ta làm như sau: Chọn Project –> New source Sẽ xuất hiện lại cửa sổ sau:
  • 24. Chọn Test Bench WaveForm, đặt tên cho file là test (file này trong project có đuôi là .tbw) . Tiếp tục click Next -> Next -> Finish. Sẽ ra cửa sổ như sau: Đây là cửa sổ để ta thiết lập các giá trị khởi tạo cho việc mô phỏng. Ở ô Clock Information chọn kiểu mạch mà ta muốn mô phỏng. Mạch ta tạo ra là một bộ đếm, là mạch tuần tự có một xung clock nên chọn Single Clock. Nếu là mạch tổ hợp ta chọn combinatorial.
  • 25. Các tham số khác cũng đã được giải thích ngay trong ảnh. Click Finish để hoàn tất lựa chọn. Ta được cửa sổ sau: Click vào dòng tín hiệu ngõ vào DIRECTION để có thể thay đổi dạng sóng của nó (click vào các chấm xanh da trời). Tất cả các tín hiệu ngõ vào điều có thể thay đổi theo ý, còn ngõ ra thì không ( điều hiển nhiên). Click File -> Save để lưu tùy chọn dạng sóng. Bây giờ quay lại cửa sổ sources window để tổng hợp và chạy mô phỏng.
  • 26. Xem kết quả mô phỏng: Trong cửa sổ Sources Window chọn : Behavioral Simulation
  • 27. Trong cửa sổ mới chọn test.tbw. Trong ô Processes click đúp vào Simulate Behavioral Model và chờ một lát. Kết quả sẽ xuất hiện của sổ thể hiện kết quả mô phỏng. Đến đây ta đã hoàn thành việc mô phỏng, như vậy trong Project của ta lúc này có thêm một file nữa là test.tbw. Bây giờ ta sẽ thực hiện các ràng buộc (Constraints), gán chân (Assigning Pin), tổng hợp (Synthesis) và nạp vào chip FPGA . Trước hết là tạo các ràng buộc. Quay lại cửa sổ Sources Window chọn Synthesis/ Implement Design và chọn counter-behavioral. Trong cửa sổ processes click vào dấu + ở dòng User Constraints .
  • 28. Click đúp vào Create Timing Constraints sẽ xuất hiện thông báo yêu cầu thêm file .UCF vào project, đương nhiên ta đồng ý (chọn YES ). Cửa sổ mới xuất hiện: Phía dưới cửa sổ chọn Global, phía trên chọn CLOCK rồi click vào nút (ở dưới chữ window). Sẽ xuất hiện cửa sổ mới, chọn các giá trị như hình.
  • 29. 40 ns : chu kì clock. 50 % : cycle duty. Click OK để hoàn thành lựa chọn. Tiếp tục click vào biểu tượng để thiết lập pad to setup. pad to setup là thời gian tối ta mà dữ liệu phải đặt vào chân ngõ vào của chip trước khi có xung clock. Tức là ta phải có dữ liệu ở chân ngõ vào một khoảng thời gian trước khi có xung clock. Ta chọn các thông số cho pad to setup như hình liền dưới, rồi click OK. Tiếp tục click vào biểu tượng để thiết lập thông số Clock to Pad . Clock to Pad là thời gian tối thiểu để dữ liệu ở ngõ vào được đưa tới ngõ ra sau khi có cạnh (lên hay xuống) của xung clock.
  • 30. Cửa sổ xuất hiện, ta chọn các thông số như hình liền dưới rồi click OK. Cuối cùng ta được kết quả như hình sau: Chọn File -> Save để lưu kết quả lại. Ta cũng có thể đóng luôn cửa sổ Constraints Editor lại.
  • 31. Như vậy ta đã tạo xong các ràng buộc (Constraints). Việc tiếp theo là gán chân (Assigning Pin). Bây giờ quay trở lại cửa sổ chương trình chính ISE. Click đúp vào Assign Package Pins cửa sổ mới hiện ra, chọn thanh Package View ở phía dưới. Dùng chuột kéo các tín hiệu của bộ counter của cửa sổ Design Object List (ở bên trái) rồi thả vào các chân của FPGA (bên phải). Bỏ CLOCK vào chân U10. (đây là chân cấp clock cho FPGA) Bỏ DIRECTION vào chân U1. (chân input của FPGA) Bỏ COUNT_OUT(0) vào chân T12. (chân I/O của FPGA) Bỏ COUNT_OUT(1) vào chân R12. (chân I/O của FPGA) Bỏ COUNT_OUT(2) vào chân R11. (chân I/O của FPGA) Bỏ COUNT_OUT(3) vào chân R10. (chân I/O của FPGA) Kết quả ta được như sau:
  • 32. Click File -> Save -> OK để hoàn thành việc gán chân. Ta có thể đóng cửa sổ của PACE editor lại. Tới đây ta đã hoàn thành công việc gán chân. Tiếp theo là tổng hợp (synthesis). Thực ra trong quá trình mô phỏng thì quá trình tổng hợp đã xảy ra rồi. Thực ra, nếu bạn chỉ mô phỏng không thôi thì tổng hợp sẽ là công việc đầu tiên và không cần các bước ràng buộc (Constraints), gán chân (Assigning Pin) gì cả. Do đó bước này phải gọi là: Map, Place and Route mới đúng. Trở về chương trình chính ISE, ở cửa sổ processes click vào Implement Design.
  • 33. Như vậy bạn đã xong công việc place and route. Bạn cũng có thể xem mạch được tổng hợp như thế nào bằng cách: Trong cửa sổ Processes, chọn synthesize -> View Technology Schematic (mức cổng). hay: synthesize -> View RTL Schematic (mức thanh ghi). Bước cuối cùng là nạp chương trình cho FPGA, phần này đã trình bày ở mục VI. Chú ý: - Board Spartan 3E còn nhiều thành phần nữa mà tôi chưa trình bày kịp, bạn nào có thể thì xin bổ sung để tài liệu thêm đầy đủ. - Phần trình bày trên chỉ là sơ lượt về ISE, còn nhiều phần nữa, nhưng vì trình độ và thời gian nên chưa thể soạn được. - Tài liệu này có thể có những sai sót, nên các bạn có thể sửa chữa tùy ý .
  • 34. IX. PHẦN NÀY DÀNH CHO QUẢNG CÁO. Chuẩn bị ra trường (wow, may quá). Tui rất thích công việc liên quan tới FPGA, vi điều khiển (8051 hay AVR, còn PIC thì chưa biết) .v.v. Có bác nào muốn tuyển dụng tui xin liên hệ: Mail: thaphymat@walla.com Xin vui lòng giới thiệu về bạn hay công ty của bạn. Xin cảm ơn. HCM, ngày 27-07-2007. thavali
  • 35. Micron DDR RAM MT46V32M16 I. SƠ ĐỒ CHÂN VÀ CẤU TRÚC a. Sơ Đồ Chân VDD, VDDQ : cấp nguồn 2.5 v. VSS, VSSQ : nối GND. NC, DNU : Không sử dụng.
  • 36. b. Cấu Trúc MT46V32M16 (Gọi tắt là DRAM) có dung lượng 64 Mbyte. Bộ nhớ được phân chia thành 4 bank. Mỗi bank là 16 Mbyte với giao diện : 8Meg x16 bit (meg = mega). DRAM có có cấu trúc kiểu lưới (grid) mà mỗi vị trí của một ô nhớ (1 word) được xác định dựa vào địa chỉ bank (Bank address), địa chỉ dòng (row address) và địa chỉ cột (column address). MT46V32M16 có 8K địa chỉ dòng, 1K địa chỉ cột và 4 bank. Việc truy xuất DRAM được thực hiện bằng cách dùng các nhóm tín hiệu: Điều khiển, địa chỉ và dữ liệu. a. Nhóm tín hiệu điều khiển bao gồm: - CKE : clock enable. - CK,CK# : cặp xung clock (differential clock). - CS# : Chip select. - WE# - CAS# - RAS#
  • 37. b. Nhóm tín hiệu địa chỉ: A0 – A12 : chỉ định địa chỉ dòng hay cột. BA0 – BA1: chỉ định địa chỉ bank. c. Nhóm tín hiệu dữ liệu: DQ0 – DQ15: bus dữ liệu. LDQS, UDQS: dò dữ liệu (data strobe) LDM, UDM : data mask. II. HOẠT ĐỘNG Truy xuất DRAM được thực hiện theo từng chuỗi dữ liệu có hướng (oriented data burst). Chiều dài của chuỗi có thể tùy chọn từ 2, 4, 8 từ nhớ (word). Để thực hiện điều này ta gởi đi các lệnh điều khiển thông qua các tín hiệu điều khiển. Cụ thể, quá trình truy xuất DRAM được thực hiện như sau: 1. Chuyển DRAM vào trạng thái nghỉ. 2. Gởi đi lệnh ACTIVE để kích hoạt dòng (tức địa chỉ dòng). 3. Gởi lệnh read hay write để đọc hay ghi vào DRAM. 4. Gởi lệnh precharge để kết thúc đọc hay ghi một chuỗi và chuẩn bị đọc/ghi chuỗi khác. Đây chỉ là các bước chính, về chi tiết các DRAM khác nhau có cách truy xuất khác nhau. - Các lệnh (command) được gởi đi khi cạnh lên (rising) của CLK giao với CLK# . - Dữ liệu được gởi đi ở cả hai cạnh của CLK. III. TẬP LỆNH Dựa vào các tín hiệu điều khiển ta có thể gởi tới DRAM các lệnh sau (bảng III.1): NOP : không làm gì. DESELECT : không làm gì. ACTIVE: Lựa chọn (kích hoạt) bank và dòng. READ : Chọn bank và cột để đọc chuỗi (burst).
  • 38. WRITE: Chọn bank và cột để ghi chuỗi (burst). PRECHARGE (PRE): Ngừng kích hoạt dòng trong một bank hay tất cả các bank. LOAD MODE REGISTER (LMR): chọn chế độ hoạt động cho DRAM. AUTO REFRESH (AR): Tự làm tươi. BURST TERMINATE (BST): Chấm dứt (bằng cách cắt ngang) quá trình đọc một burst. Bảng III.1 Quá trình truy xuất DRAM có liên quan tới các tham số chính như sau: - tCAS (CAS latency) : là thời gian trì hoãn (tính bằng số chu kì xung clock) tính từ lúc truy xuất cột cho đến khi bit dữ liệu đầu tiên xuất hiện ở ngõ ra. - tRCD (RAS to CAS delay) : là thời gian trì hoãn từ lúc một dòng (row) được kích hoạt cho đến khi một cột (column) tương ứng được kích hoạt. - tRP (RAS precharge) : là thời gian trì hoãn để kết thúc truy xuất một dòng và bắt đầu truy xuất một dòng khác. - tRAS (RAS latency): thời gian trì hoãn giữa lệnh lệnh PRECHARGE và ACTIVE, do dòng chỉ cần kích hoạt một lần trong suốt thời gian truy xuất một chuỗi dữ liệu nên, nói chung, thông số tRAS ít quan trọng. - Burst length: chiều dài của chuỗi dữ liệu trong một lần truy xuất. Có thể 2, 4, 8 word. - Burst type: thứ tự sắp xếp các word trong một burst. 1. ĐỌC DRAM Để đọc DRAM, trước hết ta cấu hình chế độ hoạt động cho DRAM bằng cách dùng lệnh LMR, lệnh này chỉ được phát ra khi DRAM ở chế độ nghỉ (idle). Có nhiều chế độ hoạt động của DRAM. Phần trình bày sau là cách đọc DRAM với các tham số như sau: - DRAM hoạt động ở chế độ bình thường Bằng cách thiết lập A7 – A10 = {0, 0, 0, 0}. - Chế độ thanh ghi cơ bản. Bằng cách thiết lập BA0, BA1 = {0, 0}. - Burst length = 4. Bằng cách thiết lập A0, A1, A2 = {0, 1, 0}. - Burst type = tuần tự (sequential).
  • 39. Bằng cách thiết lập A3 = 0. - CAS Latency = 2. Bằng cách thiết lập A4, A5, A6 = {0, 1, 0}. Cuối cùng ta gởi đi lệnh LMR để bắt đầu cấu hình, bằng cách cho CS#, WE#, CAS#, RAS# = {0,0,0,0}. Các lựa chọn cấu hình khác có thể dựa vào bảng III.2. Cần để ý là tất cả các lệnh (command) chỉ có thể gởi đi ở vị trí giao nhau của cạnh lên xung CLK và cạnh xuống xung CLK#. Còn dữ liệu thì được truyền ở cả hai cạnh của CLK, do đó tốc độ truy xuất dữ liệu nhanh gấp đôi tốc độ CLK (DDR = Double data rate). Thông số CAS Latency khá quan trọng vì nó ảnh hưởng đến việc lựa chọn tốc độ xung clock. Với CAS Latency =2 thì tốc độ xung clock tối đa là CLK = 133 MHz. Ở CAS Latency = 3 thì tốc độ xung clock tối đa là CLK = 200 MHz. Như vậy nếu như chọn CAS Latency = 3 thì tốc độ truy xuất dữ liệu của DRAM là 400 MHz. Trong thực tế, tốc độ có thể chậm hơn vì cần tốn thời gian để truyền đi các lệnh trước khi dữ liệu được truy xuất. Tuy nhiên, nếu quá trình truy xuất là một chiều (chỉ đọc hoặc ghi) thì tốc độ có thể lên đến 400 MHz bằng cách gởi đi các lệnh theo một chu kì thích hợp (xem chi tiết bên dưới ). Bảng III.2
  • 40. - Sau khi lệnh cấu hình LMR được gởi đi, thì lệnh kế tiếp là ACTIVE, lệnh ACTIVE thực chất là lệnh kích hoạt dòng (row) và bank, nơi mà ta cần truy xuất dữ liệu. Các thông số đi kèm với lệnh ACTIVE là địa chỉ bank (thông qua các tín hiệu BA0, BA1) và địa chỉ cột (thông qua các tín hiệu A0 – A12 ). - Cuối cùng lệnh READ có thể được gởi đi để đọc hay ghi dữ liệu. Các thông số đi kèm với lệnh READ là địa chỉ bank (thông qua các tín hiệu BA0, BA1) và địa chỉ cột (thông qua các tín hiệu A0 – A9). Tín hiệu A10 dùng để lựa chọn chức năng AutoPrecharge, nếu chọn chức năng này, sau khi đọc xong chuỗi dữ liệu (data burst), thì tất cả các dòng của bank tương ứng với chuỗi này sẽ tự động ngưng kích hoạt (deactive). Ngược lại, nếu không chọn chức năng AutoPrecharge thì dòng vẫn mở. Sau một khoảng thời gian tRAS từ lúc lệnh READ được gởi đi, dữ liệu sẽ xất hiện ở ngõ ra. - Để xác định thời đểm bắt đầu của chuỗi dữ liệu (data burst) ở ngõ ra, người ta dùng tín hiệu dò DQS (data strobe), khi DRAM không được truy xuất, DQS ở trạng thái High_Z. Tín hiệu DQS sẽ từ High_Z xuống mức thấp để báo hiệu bắt đầu của chuỗi dữ liệu, DQS từ thấp chuyển thành High_Z để báo chầm dứt quá trình đọc dữ liệu. Hình III.1 là quá trình đọc dữ liệu với CAS latency = 2. Hình III.2 là quá trình đọc dữ liệu liên tục (CAS latency = 2) bằng cách gởi đi liên tiếp các lệnh READ cách nhau 2 chu kì CLK. Cách này giúp cho tốc độ truy xuất dữ liệu nhanh gấp đôi tốc độ CLK. Chiều cao lưng chừng của tín hiệu DQS ở cả hai hình III.1, III.2 để chỉ trạng thái High_Z. Hình III.1 Hình III.2