Spartan-3E Starter Kit

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

pdf41 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 3156 | Lượt tải: 4download
Bạn đang xem trước 20 trang tài liệu Spartan-3E Starter Kit, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
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: OUT _1CLK * _ 2IN IntegerCLK Integer = 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

Các file đính kèm theo tài liệu này:

  • pdfSpartan-3E Starter Kit.pdf