Bài giảng Họ xilinx spartan-3e fpga

Có một số họ Spartan FPGA: Spartan-II, Spartan-IIE (tương tự như Virtex), Spartan-3 (mật độ cổng cao, đạt tới 5 triệu cổng hệ thống), Spartan-3E (tương tự như Virtex-4, và tối ưu cho chi phí của logic), Spartan-3A (tối ưu cho chi phí pin), Spartan-3AN (cao cấp với flash), Spartan-3ADSP (cao cấp cho xử lý tín hiệu).

docx41 trang | Chia sẻ: haohao89 | Lượt xem: 3429 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Bài giảng Họ xilinx spartan-3e fpga, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
CHƯƠNG 2 HỌ XILINX SPARTAN-3E FPGA KIẾN TRÚC HỌ XILINX SPARTAN-3E FPGA Có một số họ Spartan FPGA: Spartan-II, Spartan-IIE (tương tự như Virtex), Spartan-3 (mật độ cổng cao, đạt tới 5 triệu cổng hệ thống), Spartan-3E (tương tự như Virtex-4, và tối ưu cho chi phí của logic), Spartan-3A (tối ưu cho chi phí pin), Spartan-3AN (cao cấp với flash), Spartan-3ADSP (cao cấp cho xử lý tín hiệu). Bảng 2.1: Họ Spartan-3 FPGA mật độ cổng cao Ta xét kiến trúc của họ Xilinx Spartan-3E FPGA có giá các logic thấp, nhưng mật độ cổng tương đối cao và đủ các đặc tính cho thiết kế phần cứng nhiều chức năng dựa trên KIT phát triển Spartan-3E và các công cụ phần mềm của Xilinx. Các đặc điểm của họ Spartan-3E FPGA Họ Spartan-3E FPGA có một số đặc điểm cơ bản sau đây: Chi phí rất thấp, là giải pháp logic hiệu năng cao cho các ứng dụng khối lượng lớn định hướng người dùng. Được chế tạo bởi công nghệ tiến trình 90 nm cao cấp. Sử dụng nhiều nguồn volt, nhiều chuẩn chân tín hiệu (pins) giao tiếp SelectIOTM: Có tới 376 I/O pins hoặc 156 đôi tín hiệu vi phân. Các chuẩn tín hiệu đầu cuối: LVCMOS, LVTTL, HSTL, và SSTL. Cho các tín hiệu 3.3V, 2.5V, 1.8V, 1.5V, và 1.2V. Tố độ truyền dữ liệu I/O 622+Mb/s. True LVDS, RSDS, mini-LVDS, differential HSTL/SSTL differential I/O. Hỗ trợ tốc độ dữ liệu gấp đôi nâng cao –DDR (Double Data Rate). DDR SDRAM hỗ trợ đến tốc độ 333 Mb/s. Các tài nguyên logic linh hoạt: Mật độ đạt tới 33192 logic cells, gồm cả thanh ghi dịch lựa chọn hoặc hỗ trợ RAM phân tán. Các bộ nhân (multiplier) và logic mở rộng. Carry Logic nhanh 18x18 multiplier cao cấp với đường ống lựa chọn. Cổng lập trình/gỡ rối IEEE 1149.1/1532 JTAG. Kiến trúc bộ nhớ SelectRAMTM phân cấp: Block RAM tốc độ nhanh có tới 648 Kbits. RAM phân tán có tới 231 Kbits. Có đến 8 khối quản lý đồng hồ số- DCM: Hạn chế độ lệch của nhịp đồng hồ (vòng lặp khóa trễ). Tổng hợp, nhân, và chia tần số. Dịch pha phân giải cao. Khoảng tần số rộng (5 Mhz đến hơn 300 MHz). Giao tiếp cấu hình với các PROM chuẩn công nghiệp: SPI serial Flash PROM chi phí thấp, tiết kiệm không gian. x8 hoặc x8/x16 parallel NOR Flash PROM. Xilinx®Platform Flash với JTAG chi phí thấp. Toàn bộ phần mềm Xilinx ISE® và WebPACKTM. Các lõi xử lý nhúng MicroBalzeTM và PicoBlazeTM. Hỗ trợ PCI 32-/64-bit 33 MHz tương thích đầy đủ (66 MHz ở một số chip FPGA). Có các lựa chọn đóng vỏ kiểu QFP và BGA. Có phiên bản XA Automotive. Bảng 2.2 là tổng hợp các loại chip của họ Spartan-3E FPGA. Chúng được thiết kế để thỏa mãn các nhu cầu của các ứng dụng điện tử dân dụng có số lượng lớn và tương đối rẻ. Bảng 2.2: Họ Spartan-3E FPGA Đóng vỏ và gắn nhãn Hình 2.1:đóng vỏ QFP và nhãn của Spartan-3E FPGA Hình 2.2:đóng vỏ BGA và nhãn của Spartan-3E FPGA Hình 2.3:đóng vỏ CP132, CPG132 và nhãn của Spartan-3E FPGA Như tất cả các họ Xilinx Spartan-3 FPGA, các Spartan-3E FPGA có mức độ tích hợp cao nên sử dụng các kiểu đóng vỏ BGA (Ball Grid Array), QFP (Quad-Flat Package) , và đóng vỏ 132-ball chip-scale (CP132 và CPG132). Thông tin của nhãn có các ý nghĩa như sau: Kiến trúc của Xilinx Spartan-3E FPGA Hình 2.4: kiến trúc Spartan-3E FPGA Trong kiến trúc của Spartan-3 FPGA có 5 thành phần chức năng cơ bản có thể lập trình được (hình 2.4): CLB (Configurable Logic Blocks) - các khối logic có thể cấu hình được: chứa các bảng LUT thực hiện các thành phần nhớ và logic như các filp-flops hoặc các mạch chốt. Các CLB thực hiện nhiều chức năng logic khác nhau và lưu trữ dữ liệu. IOB (Input/Output Blocks) - các khối vào/ra: điều khiển luồng dữ liệu giữa các chân tín hiệu vào/ra (I/O pins) và logic bên trong FPGA. Mỗi I/OB hỗ trợ luồng dữ liệu hai chiều, 3-trạng thái, một số chuẩn của tín hiệu, kể cả 4 chuẩn vi phân hiệu năng cao, và các thanh ghi tốc độ dữ liệu gấp đôi DDR register (Double Data-Rate. Block RAM: đảm bảo lưu trữ dữ liệu ở dạng các khối nhớ 18Kbit hai cổng. Dedicated Multiplier Blocks - các khối nhân trực tiếp: nhận các số nhị phân 18-bit ở các đầu vào và tính tích của chúng. DCM Blocks (Digital Clock Manager Blocks) – các khối quản lý nhịp đồng hồ số: đảm bảo sự tự định kích cỡ, các giải pháp số toàn bộ cho phân phối, trễ, nhân, chia, và dịch pha các tín hiệu đồng hồ. Những thành phần chức năng cơ bản này được tổ chức như chỉ ra ở hình 2.1. Các IOB được sắp đặt ở 4 cạnh xung quanh một mảng đều đặt các CLB. Mỗi một chip FPGA của họ Spartan-3E có 2 cột các block RAM, ngoại trừ chip XC3S100E chỉ có một cột block RAM. Mỗi một cột block RAM gồm có một số block RAM 18-Kbit. Mỗi block RAM liên hệ với một bộ nhân trực tiếp. Các DCM được đặt ở trung tâm với 2 ở đỉnh và 2 ở đáy của miếng (die) FPGA. Chip FPGA XC3S100E chỉ có 1 DCM ở đỉnh và ở đáy, trong khi các chip FPGA XC3S1200E và XCS3S1600E bổ xung 2 DCM ở giữa của các phía trái và phải. Trong Spartan-3E FPGA có một mạng dầy đặc các đường liên kết tất cả 5 thành phần chức năng cơ bản, truyền các tín hiệu giữa chúng. Mỗi một thành phần chức năng có một ma trận chuyển mạch liên quan cho phép nhiều kết nối để định tuyến. Hình 2.4: Cấu trúc của Spartan-3E FPGA Cấu hình cho Spartan-3E FPGA Các Spartan-3E FPGA được lập trình nhờ nạp dữ liệu cấu hình vào trong các mạch chốt CMOS tĩnh có thể lập trình được – CCL (static CMOS configuration latches), mà những mạch này cùng điều khiển tất cả các thành phần chức năng và các tài nguyên định tuyến trong chip FPGA. Dữ liệu cấu hình của FPGA được lưu ở PROM bên ngoài hoặc một số công nghệ nhớ không bị thay đổi khác nằm ở trên bảng hoặc ngoài bảng. Sau khi áp đặt nguồn nuôi, dữ liệu cấu hình sẽ được ghi vào FPGA nhờ sử dụng một trong các chế độ sau đây: Tuần tự chủ (Master serial): từ Xilinx Platform Flash PROM Giao tiếp ngoại vi tuần tự - SPI (Serial Peripheral Interface) từ Industry-standard SPI Serial Flash. Giao tiếp ngoại vi theo byte - BPI (Byte Peripheral Interface) lên hoặc xuống từ industry-standard x8 hoặc x8/x16 parallel NOR Flash. Tuần tự thợ (Slave serial): thông thường tải từ một bộ xử lý Song song thợ (Slave Parallel ): thông thường tải từ một bộ xử lý JTAG: thông thường tải từ một bộ xử lý hoặc từ thiết bị kiểm tra hệ thống. Spartan-3E FPGA hỗ trợ cấu hình đa khởi tạo (MultiBoot configuration), cho phép hai hoặc nhiều chuỗi bit (Bitstream) hơn được ghi vào một parallel NOR Flash. 2.1.5. Các khả năng vào/ra Giao tiếp SelectIO của Spartan-3E FPGA hỗ trợ nhiều chuẩn giao tiếp và chuẩn đầu cuối khác nhau: Các chuẩn đầu cuối: 3.3V Low-voltage (LVTTL) Low-voltage CMOS (LVCMOS): 3.3V, 2.5V, 1.8V, 1.5V, hoặc 1.2V 3V PCI ở 33MHz, và một số thiết bị, 66MHz HSTL I và III ở 1.8V, thường dùng cho ứng dụng của bộ nhớ SSTL I ở 1.8V và 2.5V, thường dùng cho các ứng dụng của bộ nhớ Các chuẩn giao tiếp khác nhau: LVDS Bus LVDS Mini-LVDS RSDS Diferential HSTL (1.8V, loại I và III) Differential SSTL (2.5V và 1.8V, loại I) Các đầu vào 2.5V LVPECL CÁC THÀNH PHẦN CHỨC NĂNG CƠ BẢN CỦA SPARTAN-3E FPGA CLB Các CLB tạo thành một tài nguyên logic chính để thực hiện các mạch đồng bộ cũng như tổ hợp. Mỗi một CLB chứa 4 mảnh (slice), và mỗi mảnh chứa 2 LUT để thực hiện logic và 2 thành phần nhớ trực tiếp, mà những thành phần nhớ này có thể được sử dụng như các flip-flops hoặc các mạch chốt. Các LUT có thể được sử dụng như bộ nhớ 16x1 (RAM16) hoặc như là thanh ghi dịch 16-bit (SRL16), và các bộ nhân bổ xung và logic carry làm đơn giản các chức năng số học và logic. Hầu hết logic đa năng trong thiết kế được tự động sắp xếp vào các tài nguyên của mảnh trong các CLB. Hình 2.5:Sắp xếp của các CLBs trong một mảng cân đối Mảng các CLB: các CLB được sắp xếp trong một mảng cân đối các hàng và các cột như chỉ ra ở hình 2.5. Mật độ các CLB trong các dòng và cột của từng chip FPGA trong họ Spartan-3E là khác nhau và được liệt kê trong bảng 2.2. Bảng 2.2: Các tài nguyên của CLB của họ Spartan-3E FPGA Các mảnh của CLB: mỗi một CLB gồm có 4 mảnh. Các mảnh được nhóm lại thành từng cặp. Mỗi cặp được tổ chức như là một cột với một chuỗi carry độc lập. Cặp bên trái hỗ trợ cả các chức năng nhớ và logic, và các mảnh của nó được gọi là SLICEM. Cặp bên phải chỉ hỗ trợ chức năng logic và các mảnh của nó được gọi là SLICEL (hình 2.6). Như vậy, có một nửa số LUT hỗ trợ cả các chức năng logic và nhớ (gồm cả RAM16 và các thanh ghi dịch SRL16), trong khi một nửa các LUT còn lại chỉ hỗ trợ chức năng logic. Cả hai loại LUT này thay đổi thông lượng của các cột mảng. Mảnh SLICEL giảm kích thước của CLB và chi phí của thiết bị, và cũng có thể bảo đảm ưu điểm hiệu năng so với mảnh SLICEM. Phần mềm phát triển của Xilinx thiết kế vị trí của một mảnh tương ứng với các tọa độ X và Y của nó, bắt đầu trong góc phải đáy như chỉ ra ở hình 2.5. Chữ ‘X’ theo sau là một số xác định các cột của các mảnh, tăng dần từ phía trái đến phía phải của miếng (die) FPGA. Chữ ‘Y’ theo sau là số xác định vị trí của từng mảnh trong từng cặp cũng như chỉ ra hàng của CLB, tăng dần từ đáy của miếng FPGA. Hình 2.6 chỉ ra CLB ở vị trí góc thấp bên tay trái của miếng FPGA. Mảnh SLICEM luôn có số chẵn sau ‘X’, và mảnh SLICEL luôn có một số lẻ sau ‘X’. Hình 2.6: Sắp xếp của các mảnh trong một CLB Hình 2.7: Các tài nguyên trong một mảnh SLICEM và SLICEL Cả mảnh SLICEM và SLICEL đều có các thành phần chung sau đây để đảm bảo các chức năng logic, số học, và ROM: 2 LUT 4-đầu vào (F và G) thực hiện bất kỳ chức năng logic 4-đầu vào: Hoặc là 16-bit x 1 sync RAM (chỉ SLICEM): RAM16 Hoặc là 16-bit shift register (chỉ SLICEM): SRL16 2 thành phần nhớ (register) 2 bộ dồn kênh chức năng rộng: F5MUX và FiMUX Carry & Control: Logic số học nhanh (Fast arithmetic logic) Logic nhân (Multiplier logic) Logic dồn kênh (Multiplexer logic) Đối với các mảnh SLICEM, các LUT có thể được cấu hình: như LUT (F và G), hoặc như 16x1 RAM phân tán (RAM16), hoặc như thanh ghi dịch 16-bit (SRL16). Hình 2.8: Sơ đồ của mảnh SLICEM Hình 2.8 là sơ đồ chi tiết của mảnh SLICEM. Nó thể hiện một tập hợp lớn các thành phần và các kết nối có trong tất cả các mảnh. Các đường nét đứt chỉ các tài nguyên chỉ có trong mảnh SLICEM và không có trong SLICEL. Mỗi một mảnh có hai nửa: đỉnh (top portion) và nửa đáy (botton portion) để phân biệt chúng với các mảnh trên và dưới trong một CLB. Các đầu vào điều khiển cho đồng hồ (CLK), cho phép đồng hồ CE (Clock Enable), cho phép ghi mảnh SLICEWE1 (Slice Write Enable), và xóa/thiết lập RS (Reset/Set) được chia sẻ trong phần logic chung (common logic) giữa hai nửa. Các LUT ở trong các nửa đỉnh và đáy của mảnh được tham chiếu như ‘G’ và ‘F’, hoặc ‘G-LUT’ và ‘F-LUT’. Các thành phần nhớ ở trong hai nửa này được gọi tương ứng là FFY và FFX. Mỗi một mảnh có 2 bộ dồn kênh với F5MUX ở nửa đáy và FiMUX ở nửa đỉnh. Phụ thuộc vào mảnh, FiMUX có tên là F6MUX, F7MUX, hoặc F8MUX, tương ứng với vị trí của nó trong chuỗi các bộ dồn kênh. Các mảnh phía thấp (cả SLICEL và SLICEM) có một F6MUX. Mảnh SLICEM phía trên có một F7MX, và mảnh SLICEL phía trên có một F8MUX. Năm bộ dồn kênh điều khiển chuỗi: CYINT, CY0F, và CYMUXF trong nửa đáy và CY0G và CYMUXG trong nửa đỉnh. Logic số học bao gồm các mạch cổng XORF và XORG, các mạch cổng FAND và GAND (tương ứng cho nửa đáy và nửa đỉnh). Logic cells: tổ hợp của một LUT và một thành phần nhớ tạo thành một “logic cell”. Các chức năng bổ xung trong một mảnh, như các bộ dồn kênh mở rộng trực tiếp, carry logic, và các mạch cổng số học, cần thêm các LUT để thực hiện logic. 2.2.2. LUT Trong họ Spartan-3E, mỗi một mảnh có 2 LUT. Các LUT là những thành phần cơ sở để dựa vào RAM để thực hiện chức năng logic, nên nó được gọi là bộ tạo tạo chức năng. Bất kỳ chức năng nào với 4-đầu vào và 1 đầu ra. LUT n-bit có thể mã hóa bất kỳ hàm Boole n-đầu vào nào nhờ các bảng chân lý. Hình 2.9 là một ví dụ cấu hình LUT để tạo các hàm logic, trong đó, các tổ hợp của 4 bit đầu vào X1, X2 , X3 và X4, cho các giá trị của tín hiệu đầu ra Y trong các bảng chân lý cho ta các hàm logic tương ứng sau khi tối thiểu hóa. Hình 2.9: Bảng chân lý và sơ đồ tạo các mạch logic từ cấu hình LUT LUT cũng có thể được mô tả như một bộ dồn kênh 16:1 với 4 đầu vào nhị phân, và các gía trị được lập trình vào trong LUT phục vụ như là dữ liệu đã được chọn (hình 2.10). Hình 2.10: LUT được mô hình như là bộ dồn kênh 16:1 0000 0001 00110 0010 0100 0101 0111 01100 1000 1001 1011 1010 1100q00 11010 1111000 1110 1 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 D A[3:0] Trong Spartan-3E 500K, các LUT trong từng cặp mảnh SLICEM có thể được cấu hình như là các RAM phân tán hoặc như thanh ghi 16-bit. Mỗi một LUT (F và G) trong một mảnh có 4 đầu vào logic A4-A1 và 1 đầu ra D. Các hàm logic với nhiều đầu vào hơn có thể được thực hiện nhờ nối cascade các LUT hoặc nhờ các bộ dồn kênh chức năng rộng. Đầu ra của LUT có thể nối với logic bộ dồn kênh rộng, với logic số học và carry, hoặc nối trực tiếp với đầu ra của CLB hoặc với thành phần nhớ của CLB (hình 2.11). Hình 2.11: Các tài nguyên của LUT trong mảnh 1. Kết hợp LUT với các bộ dồn kênh mở rộng trực tiếp: Mỗi một mảnh có 2 bộ dồn kênh mở rộng trực tiếp với F5MUX ở nửa đáy và FiMUX ở nửa đỉnh (hình 2.12). Chúng kết hợp hiệu quả các LUT để thực hiện các logic phức tạp hơn. FiMUX có tên là F6MUX, F7MUX, hoặc F8MUX, tương ứng với vị trí của nó trong chuỗi các bộ dồn kênh. Các mảnh phía thấp (cả SLICEL và SLICEM) có một F6MUX. Mảnh SLICEM phía trên có một F7MX, và mảnh SLICEL phía trên có một F8MUX. Năm bộ dồn kênh điều khiển chuỗi: CYINT, CY0F, và CYMUXF trong nửa đáy và CY0G và CYMUXG trong nửa đỉnh. Logic số học bao gồm các mạch cổng XORF và XORG, các mạch cổng FAND và GAND (tương ứng cho nửa đáy và nửa đỉnh). Các bộ dồn kênh mở rộng trực tiếp: F5MUX, F6MUX, F7MUX, và F8MUX cho phép tạo ra bất kỳ các hàm logic 5 đầu vào, 6 đầu vào, 7 đầu vào, và 8 đầu vào. Hình 2.13 chỉ ra các tên của các bộ dồn kênh trong từng vị trí trong Spartan-3E CLB. Hình 2.12: Các bộ dồn kênh trong Spartan-3E CLB Hình 2.13: Các bộ dồn kênh và liên hệ ngược trong một CLB F5MUX kết hợp 2 LUT trong một mảnh để tạo ra: Hàm bất kỳ 5 đầu vào (LUT5): 4 đầu vào đúp cho 2 LUT và 1 đầu vào điều khiển dồn kênh (hình 2.14, hình 2.15). Hoặc các hàm tùy chọn giới hạn có 9 đầu vào, nếu 2 LUT có các tổ hợp vào độc lập với nhau. Hoặc bất kỳ hàm 6 đầu vào (bộ dồn kênh 4:1). Bảng 2.3 chỉ ra các kết nối cho từng bộ dồn kênh và số lượng các đầu vào có thể có cho các loại chức năng khác nhau. Hình 2.14: Hàm 5-đầu vào được tạo từ hai LUT và F5MUX Hình 2.15: Hàm 5-đầu vào được tạo từ hai LUT và F5MUX với các tổ hợp Bảng 2.3: Các khả năng của bộ dồn kênh MUX Sử dụng Nguồn vào Số lượng đầu vào cho một chức năng Cho hàm bất kỳ Cho MUX Cho hàm tùy chọn giới hạn F5MUX F5MUX LUT 5 6 (4:1 MUX) 9 FiMUX F6MUX F5MUX 6 11 (8:1 MUX) 19 F7MUX F6MUX 7 20 (16:1 MUX) 39 F8MUX F7MUX 9 37 (32:1 MUX) 79 Sơ đồ bộ dồn kênh F5MUX cho ở hình 2.16 (F6MUX, F7MUX, F8MUX cũng tương tự). F5MUX có hai đầu vào I0 và I1, đầu vào chọn S, hai đầu ra chung O và đầu ra cục bộ LO. Khi S ở mức thấp (‘0’) thì đầu vào I0 được chọn và O=LO=I0. Khi S ở mức cao (‘1’) thì đầu vào I1 được chọn và O=LO=I1. Hình 2.16: F5MUX Theo bảng 2.3, ta thấy: F6MUX kết hợp 2 mảnh SLICEM (2 F5MUX) để tạo ra: Bất kỳ hàm 6 đầu vào (LUT6) Hoặc các hàm tùy chọn giới hạn 19 đầu vào Hoặc bất kỳ hàm 11 đầu vào (bộ dồn kênh 8:1). MUXF7 kết hợp bốn mảnh của CLB thông qua 2 F6MUX để tạo ra: Bất kỳ hàm 7 đầu vào (LU7) Hoặc các hàm tùy chọn giới hạn 39 đầu vào Hoặc bất kỳ hàm 20 đầu vào (bộ dồn kênh 16:1) MUXF8 kết hợp hai CLB từ hai MUXF7 để tạo ra: Hàm bất kỳ 9 đầu vào (LUT9) Hoặc hàm tùy chọn 79 đầu vào Hoặc hàm bất kỳ 37 đầu vào (bộ dồn kênh 32:1). 2. Cấu hình LUT như RAM phân tán: Các LUT thuộc các mảnh SLICEM có thể được cấu hình như các bộ nhớ RAM phân tán (hình 2.17) như sau: Một LUT được cấu hình thành 16x1 RAM (RAM16X1S) với 1 cổng dữ liệu ra (O), 1 cổng dữ liệu vào (D), 4 cổng địa chỉ (A0, A1, A2, A3), 1 cổng cho phép ghi (WE), và 1 cổng xung nhịp ghi (WCLK). Hai LUT kết hợp song song được cấu hình thành 32x1 RAM (RAM32Z1S) hoặc thành 16x2 RAM (RAM16X2S) với hai cổng vào dữ liệu (D0, D1) và 2 cổng ra dữ liệu (O0, O1) Hai LUT kết hợp cascade được cấu hình thành RAM dung lượng lớn hơn, RAM16X1D. Các RAM có ghi đồng bộ, và đọc đồng bộ/ không đồng bộ. Các FF có thể được sử dụng cho đọc đồng bộ. Hình 2.17: Cấu hình các LUT thành các RAM phân tán 3. Cấu hình LUT như thanh ghi dịch: Mỗi LUT trong mảnh SLICEM có thể được cấu hình như là một số loại thanh ghi dịch 16-bit (shift register LUT) (hình 2.18) có đầu vào (IN) và đầu ra (OUT) tuần tự mà không sử dụng các FF có sẵn trong từng mảnh. Spartan-3 có thể có các cấu hình các loại thanh ghi dịch sau đây: SRLC16: Thanh ghi dịch LUT 16-bit với carry (Shift Register Look-up Table with Carry) (hình 2.18). Các thao tác dịch đồng bộ với nhịp đồng hồ, và có thể linh hoạt chọn lựa độ dài của đầu ra của thanh ghi dịch. Vì đầu ra được tách biệt nên nó cho phép nối tiếp nhau (cascade) bất kỳ số lượng thanh ghi dịch 16-bit nào để tạo ra thanh ghi dịch có độ dài bit bất kỳ mong theo mong muốn. Các đầu vào A[3:0] chọn độ dài cho cổng ra của thanh ghi dịch. Thanh ghi dịch có thể có độ dài cố định, tĩnh hoặc linh hoạt điều chỉnh. Các nội dung của thanh ghi dịch SRLC16 được khởi tạo nhờ gán một gía trị gồm 4 chữ số ở hex cho thuộc tính INIT (trong VHDL hay Verilog). Chữ đầu tiên, hoặc chữ số hex ở bên trái nhất là bit trọng lớn nhất (MSB). Nếu gía trị INIT không được xác định, thì gía trị mặc định là 0000, như vậy thanh ghi dịch sẽ được xóa trong khi cấu hình. Dữ liệu vào (D) được nạp bít đầu tiên của thanh ghi dịch SRLC16 khi nhịp đồng hồ CLK chuyển từ thấp lên cao. Trong các thời điểm CLK chuyển từ thấp lên cao, dữ liệu được dịch sang vị trí bit cao hơn. Dữ liệu xuất hiện ở đầu ra Q khi độ dài của thanh ghi dịch, được xác định nhờ các đầu vào địa chỉ A[3:0], đạt được. Đầu ra Q15 (hay MC15), gọi là đầu ra Carry, sẵn có để có thể cấu hình nối tiếp (cascade) các thanh ghi dịch tiếp theo để tạo ra các thanh ghi dịch có độ dài lớn hơn. Các đầu vào của LUT không đồng bộ (hay linh hoạt) chọn 1 trong 16 thành phần nhớ (FF) của thanh ghi dịch). Nếu cổng Q được sử dụng như là đầu ra Q của thanh ghi dịch thay vì sử dụng Q15/MC15, ta thiết lập địa chỉ thành 7 (0111) để chọn Q7 như là đầu ra của thanh ghi dịch 8-bit. Hình 2.18: LUT được cấu hình như thanh ghi dịch SRL1616-bit có thể địa chỉ 0000 0001 00110 0010 0100 0101 0111 01100 1000 1001 1011 1010 1100q00 11010 1111000 1110 Q A[3:0] D Q D Q D Q CLK D Q15/ MC15 D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q D Q Hình 2.19: Sơ đồ khối của thanh ghi dịch 16-bit có thể địa chỉ, SRLC16 SRLC16 D CLK A[3:0] Q Q15 Để có thanh ghi dịch có độ dài cố định, các giá trị đầu vào A[3:0] phải tĩnh. Độ dài của thanh ghi dịch có thể thay đổi từ 1 bit đến 16 bit và được xác định bởi công thức sau: Độ dài = (8*A3) + (4*A2) + (2*A1) + A0 + 1 Nếu A3, A2, A1, và A0 đều bằng 0, (0000), thì thanh ghi dịch có độ dài 1 bit. Nếu tất cả chúng đều bằng 1, (1111) thì thanh ghi dịch có độ dài 16 bit. Có thể thay đổi linh hoạt độ dài của thanh ghi dịch nhờ thay đổi các gía trị vào A[3:0]. Ví dụ, nếu A2, A1, và A0 đều bằng 1 và A3 thay đổi giữa 1 và 0, thì độ dài của thanh ghi dịch thay đổi từ 16 bit xuống 8 bit. Bên trong, độ dài thanh ghi dịch SRL16 luôn là 16 bit và các đường dây A[3:0] để chọn bit nào trong 16 bit của SRL16 đi ra ngoài cổng ra. SRLC16_1: thanh ghi này khác với SLC16 bởi tác dụng của CLK. Dữ liệu vào D được nạp bít đầu tiên của thanh ghi dịch SRL16 khi nhịp đồng hồ CLK chuyển từ cao xuống thấp (hình 2.20). Trong các thời điểm CLK chuyển từ cao xuống thấp, dữ liệu được dịch sang vị trí bit cao hơn. Dữ liệu xuất hiện ở đầu ra Q khi độ dài của thanh ghi dịch, được xác định nhờ các đầu vào địa chỉ A[3:0], đạt được. Đầu ra Q15 (hay MC15), gọi là đầu ra Carry, sẵn có để có thể cấu hình nối tiếp (cascade) các thanh ghi dịch tiếp theo để tạo ra các thanh ghi dịch có độ dài lớn hơn. Hình 2.20: Sơ đồ khối của thanh ghi dịch 16-bit có thể địa chỉ, SRLC16_1 SRLC16_1 D CLK A[3:0] Q Q15 SRLC16E: than
Tài liệu liên quan