L ời cảm ơn
2.1.2. Kiến trúc FPGA
Hình 2.1 : Kiến trúc chung của FPGA
Mỗi nhà sản xuất FPGA có riêng cấu trúc FPGA, nhưng nhìn chung cấu
trúc được thểhiện giống như trong hình bên trên. Cấu trúc FPGA bao gồm có configuration logic blocks (CLBs), configurable I/O blocks (IOB), và programmable interconnect. Và tất nhiên, chúng có mạch clock để truyền tín hiệu clock tới các logic block, và thêm vào đó có các logic resources như
ALUs, memory và có thể có cả decoders. Các phần tử lập trình được của FPGA có 2 dạng cơ bản là các RAM tĩnh (Static RAM) và anti-fuses.
Configurable Logic Blocks (CLBs)
Configurable Logic Blocks (CLBs) bao gồm các Look-Up Tables (LUTs) rất
linh động có chức năng thực thi các logic và các phần tử nhớ dùng như là các
flip-flop hoặc các chốt (latch). CLB thực hiện phần lớn các chức năng logic như là lưu trữ dữ liệu,..
Hình 2.2 : Một Logic Block điển hình Configurable I/O Blocks
Input/Output Blocks (IOBs) điều khiển dòng dữ liệu giữa các chân vào ra I/O và các logic bên trong của FPGA. Nó bao gồm có các bộ đệm vào và ra với 3 trạng thái và điều khiển ngõ ra dạng open collector. Phần lớn là có trở
kéo lên ở ngõ ra và thỉnh thoảng lại có trở kéo xuống.IOBs hỗ trợ luồng dữ
liệu 2 chiều (bidirectional data flow) và hoạt động logic 3 trạng thái (3 state). Hỗ trợ phần lớn các chuẩn tín hiệu, bao gồm một vài chuẩn tốc độ cao, như
Double Data-Rate (DDR).
Interconnect ở FPGA khác xa so với ở CPLD, tuy nhiên lại giống với của gate array ASIC. Có một line dài được dùng để nối các CLBs quan trọng mà chúng lại ở cách xa nhau mà không gây ra quá nhiều trễ. Chúng có thể được
dùng như là các bus ởtrong chip. Có các line ngắn được dùng để liên kết các CLBs riêng rẽ nhưng đặt gần nhau. Và cũng thường có vài ma trận chuyển
đổi (switch matrices), giống như trong CPLD, nối giữa các line dài và ngắn lại với nhau theo một số cách đặc biệt. Các chuyển đổi lập trình được (Programmable switches) bên trong chip cho phép kết nối giữa CLBs tới các interconnect line và giữa interconnect line với các line khác và với switch matrix. Các bộ đệm 3 trạng thái được dùng đểkết nối phần lớn các CLBs với các line dài (long line), tạo nên các bus. Các long line đặc biệt, gọi là các line clock toàn cục (global clock lines), được thiết kế đặc biệt cho trở kháng thấp và nhờ đó mà thời gian lan truyền nhanh hơn. Chúng được kết nối với các bộ đệm clock và với mỗi phần tử được clock trong mỗi CLB.Đó là cách mà clock
có thểphân phối bên trong FPGA.
Hình 2.4 : Programmable Interconnect Mạch đồng hồ(Clock Circuitry )
các tín hiệu clock vào các đường clock toàn cục (global clock line) như mô tả ởbên trên.Các đường clock được thiết kế sao cho thời gian thời gian lệch nhỏ
nhất và thời gian lan truyền nhanh. Thiết kế đồng bộlà yêu cầu bắt buộc với FPGA, từ khi độ lệch tuyệt đối và trễ không được bảo đảm. Chỉkhi dùng các tín hiệu clock từcác bộ đệm clock thì thời gian trễ tương đối và thời gian lệch mới được đảm bảo.
2.1.2.2. So sánh giữa cấu trúc nhỏvà cấu trúc lớn
FPGA có cấu trúc nhỏgiống như các mảng cổng của hệASIC với các CLBs chỉ bao gồm các phần tử cơ bản rất nhỏ như các cổng NAND, cổng NOR, … Các nhà lý luận cho rằng các phần tửnhỏcó thểnói với nhau tạo lên các chức
năng lớn hơn mà không tốn nhiều các phần tử logic. Trong các FPGA có cấu trúc lớn, các CLB có thể bao gồm 2 hoặc nhiều flip-flop, các thiết kế mà không cần nhiều flip-flop sẽ khiến cho nhiều flip-flop không được dùng đến. Tiếc rằng, các cấu trúc nhỏlại yêu cầu khá nhiều nguồn kết nối (routing resource), dẫn đến tăng không gian và thêm vào một lượng lớn trễ mà không thểbù lại
đểcó hiệu quả hơn.
2.1.2.3. So sánh giữa SDRAM Programming và Anti-fuse programming
Có 2 cách đểlập trình FPGA. Cáchđầu tiên là SDRAM Programming, bao gồm một vài bit Static RAM cho mỗi phần tử lập trình. Ghi một bit với giá trị
0 sẽ ngắt switch, trong khi ghi giá trị 1 sẽ đóng switch. Cách còn lại là anti- fuse bao gồm các cấu trúc rất nhỏ, không giống như các cầu chì thông
thường, bình thường chúng không tạo ra một kết nối nào cả. Một dòng điện
có cường độnhất định trong khi lập trình thiết bịsẽdẫn đến việc hai bên của anti-fuse kết nối với nhau.
Thuận lợi của cấu trúc FPGA dựa trên SRAM là chúng dùng một quá trình sản xuất chuẩn mà ở đó các kế hoạch sản xuất chip là gần như giống nhau và
luôn luôn được tối ưu cho khả năng hoạt động. Từ khi mà SRAM có thể lập trình lại được thì FPGA có thể lập trình lại bất cứ khi nào muốn, thận chí ngay cả khi chúng đang ở trong hệ thống, đơn giản như là ghi vào SRAM
nguồn có thể thay đổi nội dung của RAM. Các thiết bịdựa trên SDRAM cũng
có thời gian trễ đường truyền lớn.
Thuận lợi của cấu trúc FPGA dựa trên anti-fuse là chúng là non-volatile và các trễ khi nối dây sẽ rất nhỏvì thế nên chúng có khuynh hướng nhanh hơn. Nhược điểm là chúng yêu cầu một bộlập trình bên ngoài để lập trình và mỗi khi lập trình xong thì không thể thay đổi được.
2.1.2.4. Cấu trúc FPGA của Spartan 3
Cấu trúc tổng quan của Spartan 3 gồm có 5 thành phần có chức năng khả
trình cơ bản sau:
Configurable Logic Blocks (CLBs) bao gồm các Look-Up Tables (LUTs) rất linh động có chức năngthực thi các logic và các phần tử nhớ dùng như là
các flip-flop hoặc các chốt (latch). CLB thực hiện phần lớn các chức năng logic như là lưu trữ dữ liệu,..
Input/Output Blocks (IOBs) điều khiển dòng dữ liệu giữa các chân vào ra I/O và các logic bên trong của FPGA. IOBs hỗ trợ luồng dữ liệu 2 chiều (bidirectional data flow) và hoạt động logic 3 trạng thái (3 state). Hỗtrợphần lớn các chuẩn tín hiệu, bao gồm một vài chuẩn tốc độ cao, như Double Data- Rate (DDR).
Block RAM cho phép lưu trữ dữ liệu dưới dạng các khối (block) dual- port 18-Kbit.
Multiplier Blocks cho phép 2 sốnhị phân 18bit làm đầu vào và dễ dàng tính toán tích của chúng.
Digital Clock Manager (DCM) Blocks cung cấp khả năng tự xác định xung clock, là giải pháp số hoàn chỉnh cho các tín hiệu clock phân phối, trễ, nhân, chia và dịch bit.
.
Hình 2.5 : Cấu trúc các thành phần của Spartan 3A
Từ hình vẽ ta thấy, các IOBs bao quanh các mảng CLBs, riêng Spartan-3E chỉ có một vòng các IOBs. Mỗi cột block RAM bao gồm một vài block RAM 18-Kbit, mỗi block RAM lại gắn liền với một multiplier dành riêng. Các DCM
được đặt ở các vị trí: 2 DCM phía trên và 2 cái phía dưới của thiết bị, và đối với các device lớn hơn thì có thêm các DCM ởphía bên cạnh.
Đặc điểm chung mạng Spartan-3 là kết nối liên thông giữa 5 phần tử cơ
bản này, và truyền tín hiệu giữa chúng. Mỗi thành phần chức năng này có
một switch matrix dành riêng để cho phép chọn lựa kết nối cho việc đi dây
trong FPGA.
2.1.3. Trình tựthiết kếmột chip
Hình 2.6. Design Flow Ghi các đặc điểm kĩ thuật
Tầm quan trọng của các đặc điểm kĩ thuật (specification) không thể phóng
đại quá. Nó chỉ tuyệt đối cần đặc biệt khi là một hướng dẫn để chọn công nghệ phù hợp và tạo những yêu cầu của bạn cho các nhà sản xuất chip. Và
các đặc điểm kĩ thuật cho phép mỗi kĩ sư hiểu về thiết kế hệ thống chung và công việc của họtrong hệ thống đó là gì. Và nó cũng cho phép các kĩ sư thiết kếgiao diện đúng cho một loạt các phần của chip. Các đặc điểm kĩ thuật cũng
giúp tiết kiệm thời gian và sự hiểu lầm. Sẽ không làm gì được nếu không có các bảng ghi các đặc điểm kĩ thuật.
Chi tiết kĩ thuật nên bao gồm các thông tin sau đây:
Sơ đồ khối bên ngoài để chỉ ra chip đó được đặt vào trong hệ thống
Miêu tả các chân vào ra bao gồm khả năng lái đầu ra, mức ngưỡng
đầu vào.
Thời gian ước lượng bao gồm thời gian thiết lập và giữ ởcác chân vào, thời gian lan truyền ra các cổng ra và thời gian chu kì clock.
Đếm xấp xỉsốgate
Dạng đóng gói
Tiêu thụnguồn
Giá cả
Các thủtục đểkiểm tra
Một điều rất quan trọng nữa là đó là các tài liệu trực tuyến. Rất nhiều phần sẽ được dự đoán tốt nhất ở trong đó, nhưng sẽ thay đổi trong quá trình
chip được thiết kế.
Chọn công nghệ
Mỗi khi một chi tiết miêu tả kĩ thuật được xuất bản, nó có thể được dùng
đểchọn nhà sản xuất chip tốt nhất với công nghệvà cấu trúc giá cảlà tốt nhất
đáp ứng được yêu cầu của bạn.
Chọn một hướng tiếp cận thiết kế
Tại thời điểm này bạn phải quyết định cách thực hiện thiết kế mà bạn mong muốn. Đối với các chip nhỏ thì cách tiếp cận bằng sơ đồ nguyên lý (schematic) thường được chọn, đặc biệt là khi các kĩ sư thiết kế đã quen thuộc với các công cụnày. Thế nhưng đối với các thiết kế lớn hơn, nguôn ngữmiêu tả phần cứng (hardware description language) HDL như Verilog và VHDL được dùng bởi khả năng mềm dẻo, dễ đọc, dễ chuyển giao. Khi dùng ngôn ngữ cấp cao, phần mềm tổng hợp (synthesis software) sẽ được yêu cầu tổng hợp (synthesize) thiết kế. Có nghĩa rằng phần mềm này sẽ tạo ra các cổng ở
cấp thấp từ miêu tả ởcấp cao hơn.
Chọn công cụtổng hợp
từ khi mỗi công cụ tổng hợp được khuyên dùng và sự ủy thác của cách thiết kếphần cứng nên nó có thểhoạt động tổng hợp đúng hơn.
Thiết kếchip
Có một số cách đểthiết kếchip
Top-down design (Thiết kếtừtrên xuống dưới)
Macros
Synchronous design
Protect against metastability
Avoid floating nodes
Avoid bus contention
Mô phỏng – cái nhìn tổng quan vềthiết kế
Mô phỏng là một quá trình liên tục khi mà thiết kế xong. Từng phần nhỏ
của thiết kế nên được mô phỏng trước khi kết hợp chúng thành các phần lớn
hơn. Điều này rất là cần thiết và sự mô phỏng theo thứ tự sẽ kiểm tra chức
năng hoạt động đúng của từng phần.
Mỗi khi thiết kếvà mô phỏng hoàn thành, dẫn đến một cái nhìn tổng quan khác về thiết kế vì thế thiết kế có thể được kiểm tra lại. Thật là quan trọng để
nhận các kết quả khác cho phép nhìn qua các mô phỏng và chắc chắn rằng
không có điều gì bịquên và không sự tổn hao nào gặp phải. Đó là một trong những khái quát quan trọng nhất bởi vì khi mô phỏng đúng và thành công
thì bạn sẽbiết được chip của bạn sẽhoạt động đúng trong hệthống.
Tổng hợp
Nếu thiết kế dùng HDL, bước tiếp theo là tổng hợp chip, bao gồm việc dùng phần mềm tổng hợp để chuyển đổi thật tối ưu từ thiết kế mức RTL (register transfer level) sang thiết kế mức gate mà có thể gắn vào các khối logic trong FPGA.
Bước tiếp theo là sắp đặt chip, kết quả trong việc thiết kế vật lý cho chip thực. Điều này bao gồm các công cụ của nhà sản xuất đẻ tối ưu lập trình cho
chip đểthực hiện thiết kế. Sau đó, thiết kế được lập trình vào cho chip.
Mô phỏng lại – tổng quan cuối cùng
Sau khi sắp đặt xong, thì chip phải được mô phỏng lại với các con số về
thời gian tạo ra bởi các layout thực tế. Nếu mọi thứ đều tốt đến thời điểm này, thì một kết quảmô phỏng mới sẽ đúng với các kết quảdự đoán.
Kiểm tra
Đối với các thiết bịlập trình được, đơn giản là lập trình thiết bị đó và ngay
lập tức có mẫu thử. Sau đó bạn có trách nhiệm đặt mấu thử này vào trong hệ
thống và xem xem hệ thống có làm việc đúng không. Nếu bạn làm lần lượt
các bước ở bên trên thì đa phần là hệ thống sẽ hoạt động đúng chỉ với một vài lỗi rất nhỏ. Các lỗi này thường được làm việc xung quanh với việc thay
đổi hệ thống và thay đổi phần mềm hệ thống. Các lỗi này cần được kiểm tra và trích dẫn lại để có thể được sửa chữa trong phiên bản tiếp theo của chip. Kiểm tra hệ thống nhúng là cần thiết tại thời điểm này để đưa ra kết quảrằng mọi phần của hệthống đều hoạt động đúng khi kết hợp với nhau.
Khi các chíp được đưa vào sản xuất, rất cần thiết có một vài kiểm tra đểcó một vài kiểm tra burn-in trong hệ thống để test thường xuyên hệ thống qua thời gian dài. Nếu một chip được thiết kế đúng, thì nó chỉbịhỏng khi lỗi điện học hoặc lỗi cơ học sẽ thường xuyên xảy ra với loại kiểm tra khắc nghiệt này.
2.1.4. Ngôn ngữmô tảphần cứng VHDL
VHDL là một ngôn ngữ mô tả phần cứng (hardware description language), mô tả hành vi của mạch điện hoặc hệ thống, từ đó mạch điện vật
lý hoăc hệthống có thể được thực thi.
VHDL là viết tắt của VHSIC Hardware Description Language. Bản thân VHSIC là viết tắt của Very High Speed Integrated Circuits (mạch tích hợp tốc
lần nâng cấp sau đó có tên là VHDL 93. VHDL là ngôn ngữ mô tả phần cứng nguyên gốc đầu tiênđược chuẩn hóa bởi Institue of Electrical and Electronics Engineers (IEEE), tới chuẩn IEEE 1076. Trong IEEE 1164, có một chuẩn được thêm vào là giới thiệu hệthống logic đa giá trị(multi-valued logic system).
Động cơ thúc đẩy cơ bản khi dùng VHDL (hay dùng Verilog) là VHDL là một ngôn ngữ độc lập chuẩn của các nhà công nghệ, các nhà phân phối do đó
chúng có khả năng portable và kếthừa cao (reusable). Hai ứng dụng trực tiếp chính của VHDL là trong mảng các thiết bị logic lập trình được ( Programmable Logic Devices) (bao gồm CPLDs – Complex Programmable Logic Devices và FPGAs – Field Programmable Gate Arrays). Mỗi khi mã nguồn VHDL được viết, chúng có thể được dùng đểthực thi mạch điện trong các thiết bịlập trình được (từ Altera, Xilinx, Almel, ..) hoặc có thể gửi đến các
xưởng chế tạo các chíp ASIC. Hiện này, rất nhiều các chip thương mại phức tạp (ví dụ như các microcontrollers ) được thiết kế dựa trên cách tiếp cận này.
Một điều chú ý về VHDL là trái ngược với các chương trình máy tính
thông thường được thực hiện tuần tự thì các câu lệnh được thực hiện song song (concurrent). Vì lí do đó, nên VHDL thường được coi là một mã nguồn
hơn là một chương trình. Trong VHDL chỉ có các câu lệnh đặt trong
PROCESS, FUNCTION, hay PROCEDURE được thực thi tuần tự.
Trình tựthiết kếmột chíp dựa trên VHDL
Một trong những tiện ích lớn của VHDL là cho phép tổng hợp mạch điện hoặc hệ thống trong thiết bị khả lập trình (programmable devide) (PLD hoặc FPGA) hoặc trong một hệ ASIC. Các bước thực hiện một project được tổng kết như trong hình dưới:
Hình 2.7: Qui trình thiết kếchip dựa trên VHDL
Chúng ta bắt đầu thiết kếbằng cách viết mã VHDL, được ghi trong các file với đuôi mở rộng .vhd và tên giống như tên của ENTITY (thực thể). Bước
đầu tiên trong quá trình synthesis là biên dịch. Biên dịch là một quá trình chuyển đổi giữa ngôn ngữ VHDL bậc cao tại Register Transfer Level (RTL) sang netlist ởmức gate level. Bước thứ2 là tối ưu thực hiện trên gate level net list tối ưu về tốc độhoặc cho diện tích. Cuối cùng là môt phần mềm place and route sẽ tạo ra một physical layout cho các chíp PLD/FPGA hoặc tạo ra các mặt nạcho một hệASIC.
2.2. Giới thiệu mạch phát triển XST 3S 1000 của hãng XESS
Trang chủcủa XESS Corp. : http://www.xess.com
X Engineering Software Systems Corporation (XESS) là công ty tại phía Bắc Carolina (Mỹ) được thành lập từ năm 1990. XESS Corp. đưa ra những