นาฬิกา

วันอังคารที่ 5 กุมภาพันธ์ พ.ศ. 2556

CPLD




CPLD ย่อมาจาก Complex Programmable Logic Device ซึ่งเทคโนโลยีที่ใช้จะเหมือนกับ EEPROM ทำให้มีความจุของเกทต่ำ โดยทั่วไปจะน้อยกว่า 20,000 เกท แต่ข้อดีของ EEPROM Based FPGA คือสามารถเก็บข้อมูลที่โปรแกรมลงไปได้โดยไม่จำเป็นต้องมีไฟเลี้ยง และในการโปรแกรมจะใช้ทรานซิสเตอร์ 1 ตัวต่อ 1 บิท ซึ่งการโปรแกรมสามารถทำได้ประมาณ 10,000 ครั้ง
FPGA ย่อมาจาก Field Programmable Gate Array ใช้เทคโนโลยีในการโปรแกรมเหมือนกับ SRAM (Static RAM) ทำให้สามารถโปรแกรมซ้ำได้โดยไม่จำกัดจำนวนครั้ง นอกจากนี้ยังมีความจุของเกทในระดับปานกลางถึงสูงมาก (ประมาณ 10,000 – 1,000,000 เกท) ซึ่งข้อดีของ SRAM Based FPGA คือใช้เวลาในการโปรแกรมน้อย (ระดับ nsec) การโปรแกรมทำได้ง่ายเทียบได้กับการเขียน SRAM ทั่วไป และเหมาะสำหรับการออกแบบวงจรที่มีความสลับซับซ้อน ส่วนข้อเสียคือไม่สามารถเก็บโปรแกรมในภาวะที่ไม่มีไฟเลี้ยงได้ ดังนั้น FPGA ชนิดนี้จึงมักใช้ควบคู่กับ ROM เพื่อเก็บโปรแกรมและทำการโหลดโปรแกรมลงในตัวชิพในขณะที่เริ่มต้นใช้งาน
ข้อสังเกตประการหนึ่งคือ CPLD จะมีความจุต่ำกว่า FPGA รวมถึงมีคุณสมบัติพิเศษอื่นๆน้อยกว่า เช่น ไม่มี RAM เป็นต้น ดังนั้นในการใช้งานออกแบบวงจรที่ซับซ้อนจึงแนะนำว่าควรใช้ FPGA จะเหมาะสมกว่าและควรศึกษาข้อมูลของ FPGA แต่ละตระกูลด้วยเนื่องจากมักจะมีคุณสมบัติพิเศษต่างกัน ข้อมูลความแตกต่างของ CPLD และ FPGA เพิ่มเติมสามารถศึกษาจากบทความของบริษัทฯที่ www.astronlogic.com

ชุดทดลอง/ชุดพัฒนา CPLD ของ ASTRON LOGIC R&D ได้แก่ 
o WIZARD PLD-A01 / WIZARD PLD-A02 / WIZARD PLD-A03 
o EAZY PLD-DEV01 / EAZY PLD-DEV02 / EAZY PLD-LAB01
ชุดทดลอง/ชุดพัฒนา FPGA ของ ASTRON LOGIC R&D ได้แก่ 
o WIZARD FLEX-A01 / WIZARD FLEX-D01

o POWER ACEX1K-10 / POWER ACEX1K-30 / POWER ACEX1K-50



โครงสร้างและหลักการทำงานของ CPLD
CPLD เป็นคำย่อมาจาก Complex Programmable Logic Device หมายถึงเป็นชิพไอซีที่สามารถสร้างวงจรลอจิกทั้งแบบ Combination และ Sequential ได้โดยการออกแบบโดยใช้คอมพิวเตอร์ และโปรแกรมลงไปบนตัวชิพโดยใช้มาตรฐานการโปรแกรมแบบ JTAG Programmer
อุปกรณ์ที่มีลักษณะคล้ายกันนี้ได้แก่
GAL (GAL : Gate Array Logic) เป็นชิพที่ใช้โปรแกรมวงจรลอจิกได้เฉพาะวงจร Combination โปรแกรมโดยเครื่องโปรแกรมโดยเฉพาะ โปรแกรมได้เพียงครั้งเดียว หากผิดไม่สามารถแก้ไขได้ ขาอินพุท และเ อ้าท์พุทถูกกำหนดไว้ตายตัวไม่สามารถเปลี่ยนได้ มีจำนวนลอจิกเกต
น้อย ใช้แทนวงจรที่มีขนาดเล็กไม่ซับซ้อน
PAL (PAL : Programmable Array Logic) เป็นชิพที่ใช้โปแกรมสร้างวงจรลอจิกที่ซับซ้อนมากขึ้นกว่า GAL โดยมีทั้งตัว Logic gate ต่าง ๆ และ ตัว Flip – flopที่สามารถออกแบบวงจรที่ผสมระหว่าง Combination logic และ Sequential logic การโปรแกรมมีเครื่องมือที่สามารถออกแบบและโปรแกรมผ่านทางคอมพิวเตอร์ได้ ส่วนขา I/O ยังถูกบังคับไม่สามารถใช้สลับกันได้ แต่การโปรแกรมไม่สามารถทำซ้ำได้มากนัก
ส่วน CPLD เป็นชิพที่ใช้ออกแบบวงจรขนาดใหญ่ที่สามารถออกแบบโดยเขียนเป็นโปรแกรมภาษา HDL ได้ ใช้เทคโนโลยีการเก็บรักษาวงจรแบบ Flash ที่สามารถคงสถานะของวงจรที่ฝังอยู่ประมาณ 20 – 40 ปี สามารถโปรแกรมซ้ำได้ประมาณมากกว่า 10000 ครั้ง ขา I/O เป็นแบบเอนกประสงค์โดยสามารถกำหนดให้ เป็นอินพุท และเอ้าพุทแบบต่าง ๆ ได้ มีจำนวนลอจิกเกตที่สามารถกำหนดให้เป็นเกต อะไรก็ได้ เริ่มตั้งแต่ 800 ตัวและ Flip-flop 36 ตัว ไปจนถึง เป็นแสน ๆ เกต
และ Flip-flop หลายพันตัว ที่สามารถรองรับการออกแบบวงจรขนาดใหญ่ ๆ และซับซ้อนมาก ๆ ได้
FPGA (FPGA : Filled Programmable Gate Array) เป็นชิพที่ใช้ออกแบบวงจรที่มีขนาดใหญ่มาก ๆ และมีความซับซ้อนของระบบสูงมากเท่าที่มีอยู่ปัจจุบัน ที่ใช้ในการพัฒนาออกแบบหน่วยประมวลผล (CPU) ขนาดใหญ่ ๆ ได้ โดยมีจำนวนลอจิกเกตและ Flip-flop นับล้าน ๆ ตัว มีจำนวนขา I/O ตั้งแต่หลายสิบไปจนถึงหลายร้อยขา การโปรแกรมและการรักษาวงจรใช้เทคโนโลยีแบบ Volantine เช่นเดียวกับโครงสร้างหน่วยความจำ RAM คือต้องโปรแกรมแล้วต้องมีไฟเลี้ยงตัวชิพอยู่ตลอดเวลา หากไฟดับวงจรจะหายไปทันที ดังนั้นในการออกใช้งาน จะต้องมี Flash memory สำหรับเก็บค่าสถานะของวงจรต่อพ่วงอยู่เสมอ โดยขณะที่โปรแกรม เราต้องโปรแกรมค่า Config. ลงใน Flash ด้วย การทำงานคือ เมื่อเปิดไฟเลี้ยงตัวชิพ ข้อมูล Config.วงจรจาก Flash จะถูกโหลดมาสร้างเป็นวงจรตามที่โปรแกรมไว้และทำงานได้ทันที ด้วยเทคโนโลยีนี้ FPGA จึงสามารถใช้งานได้เหมือนกันกับ

CPLD และที่สำคัญ CPLD และ FPGA สามารถใช้โปรแกรมที่เป็นเครื่องมือในการพัฒนาออกแบบวงจรตัวเดียวกัน
ตัวอย่าง รายละเอียดคุณสมบัติของ CPLD ตระกูล XC9500 ของ XILINX

จากตัวอย่างคุณสมบัติ และตารางทั้งสอง ของ CPLD ส่วนที่เป็นสาระสำคัญที่ควรรู้เพื่อนำไปเป็นข้อมูลเบื้องต้นในการออกแบบได้แก่
1. CPLD สามารถใช้งานความถี่สูงถึง 125 MHz ใช้งานที่แรงเคลื่อน 5 V และ 3.3 V
2. ขา I/O สามารถขับกระแสได้ ถึง 24 mA ทั้ง Sink และ Source
3. CPLD แต่ละเบอร์สามาถเลือก จำนวน I/O ตาม Package ได้ ตามตารางใน Table 2
4. เราสามารถเลือกขนาดของ CPLD ได้ตามตารางใน Table 1 ซึ่งแต่ละเบอร์จะมีจำนวนลอจิกเกตใช้งาน (Usable Gates) และจำนวน Register หรือจำนวน Flip-flop ที่แตกต่างกัน
5. การเชื่อมต่อการใช้งานด้านอินพุท กับเอ้าพุท ที่มีขนาดแรงเคลื่อน 5 V เท่ากันตามรูป (a) และที่มีแรงเคลื่อน 3.3 V ตามรูป (b) จะต้องต่อไฟเลี้ยงขา VCCINT และ VCCIO ที่ค่าแตกต่างกัน

โครงสร้างทางสถาปัตยกรรมของ CPLD
ในชิพ CPLD ตระกูล XC9500 ของ XILINX ทุกตัวประกอบด้วยวงจรที่เป็นส่วนการทำงาน ได้แก่ Function Blocks (FBs) และ I/O Blocks (IOBs) ซึ่งทั้งสองส่วนจะถูกเชื่อมต่อกันภายในโดยการทำงานในส่วนของวงจรที่เรียกว่า Fast CONNECT switch matrix ซึ่งวงจรส่วนนี้เป็นลิขสิทธิ์Fเฉพาะของผู้ผลิต วงจรส่วนนี้จะทำงานโดยข้อมูลโปรแกรมที่มาจากส่วนวงจร In-System Programming Controller วงจรส่วน Fast CONNECT switch matrix จะทำงานร่วมกับ Function Blocks ทำให้เกิดวงจรลอจิกตามที่ได้ออกแบบและโปรแกรมเข้าไว้ ในชิพ CPLD แต่ละตัวจะมีFunction Block หลายชุด โดยแต่ละชุดจะมีสายสัญญาณการโปรแกรมลอจิกจาก Fast CONNECT switch matrix เป็นอินพุทจำนวน 36 เส้น และเอ้าพุทจำนวน 18 เส้น ในแต่ละ Function Block
ภายในจะประกอบด้วยวงจรส่วนที่เรียกว่า Macrocells จำนวน 18 ชุด ภายในวงจร Macrocell จะประกอบด้วยวงจรรีจิสเตอร์ หรือ ฟลิบ-ฟล็อบ ที่สามารถประกอบกันเป็นวงจรรีจิสเตอร์ หรือ เค้าเตอร์ได้ ส่วนวงจรในส่วนที่เรียกว่า I/O Blocks จะทำหน้าที่เป็นตัวเชื่อมต่อกับขา I/O ของตัวชิพโดย
สามารถโปรแกรมให้แต่ละขาเป็น Input / Output หรือ Bi-direction และสามารถกำหนด Slew rate
ได้ด้วย
รูปที่ 1 แสดงโครงสร้างของชิพ CPLD ตระกูล XC9500 ของ XILINX
5
โครงสร้างของ Function Block
แต่ละ Function Block ประกอบด้วย Macrocell จำนวน 18 ชุดโดยแต่ละชุดจะทำงานเป็นอิสระไม่ขึ้นต่อกัน วงจรส่วนนี้สามารถจะโปรแแกรมให้สร้างได้ทั้ง Combination Logic หรือ Sequential Logic วงจร Programmable AND-Array ทำหน้าที่นำเอาสายสัญญาณที่มาจาก Fast CONNECT switch matrix มาทำให้เป็นสัญญาณ True และ complement รวมเป็น 72 เส้นสัญญาณ
ส่งไปยังวงจร Product Term Allocators และต่อไปยัง Macrocell ทั้ง 18 ตัว ตามรูปที่ 2
รูปที่ 2 แสดงโครงสร้างของ Function Block
โครงสร้างของ Macrocell
ในแต่ละ Macrocell ที่อยู่ภายใน Function Block จะประกอบด้วยส่วนการทำงานที่เรียกว่า Product Term จำนวน 5 ชุดที่ต่อสัญญาณมาจาก AND-Array สำหรับใช้เป็นข้อมูลลอจิกปฐมภูมิ
(ได้แก่ OR และ XOR Gates) ที่จะนำมาสร้างเป็นวงจรลอจิกประเภท Combination หรือเป็นวงจรควบคุมทางของวงจร Register รวมทั้งสัญญาณ Clock, Set / Reset และสัญญาณ Enable ต่าง ๆ
ในส่วนของ Macrocell register โปรแกรมสามารถจะกำหนดให้เป็นฟลิบ-ฟล็อบแบบต่าง ๆ ได้ เช่น
D-Flip-flop, T-Flip-flop หรืออาจกำหนดให้เป็นตัวผ่าน กรณีที่เป็นวงจรประเภท Combination ใน
การกำหนดสัญญาณ Set/Reset ให้ฟลิบ-ฟล็อบ สามารถกำหนดให้เป็นได้ทั้งแบบ Synchronous และ
6
Asynchronous operation และเป็นได้ทั้ง Individual และ Global operation และการทำงานขณะเริ่มเปิดไฟเข้าเลี้ยงวงจร ฟลิบ-ฟล็อบ จะถูกกำหนดให้ผู้ใช้พร้อมจะโหลดข้อมูลเข้าได้ (หากไม่ได้กำหนดเป็นอย่างอื่น
รูปที่ 3 แสดงโครงสร้างภายในของ Macrocell ของ CPLD ตระกูล XC 9500
รูปที่ 4 แสดงสายสัญญาณ Global
ที่ต่อตรงเข้าไปยัง Macrocell
7
โครงสร้างของ Fast CONNECT Switch Matrix
วงจรของ Fast CONNECT Switch Matrix จะมีสายสัญญาณเชื่อมต่อไปยัง Function Block (FB) โดยใน Function Block หนึ่ง ๆ จะมีสายจาก Fast CONNECT Switch Matrix จำนวน 36 เส้น วงจร Fast CONNECT Switch Matrix จะมีลักษณะเป็นวงจร Wired-AND การทำงานของวงจรจะเป็นตัวป้อนกลับเข้าไปยังวงจรในส่วน Function Block เพื่อสร้างเป็นวงจรลอจิกเมื่อถูกโปรแกรม ตามที่ได้ออกแบบวงจรไว้
รูปที่ 5 แสดงการทำงานในส่วนของ Fast CONNECT Switch Matrix
โครงสร้างของวงจรในส่วนของ I/O Block
I/O Block (IOB) เป็นวงจรด่านสุดท้ายที่ต่อเชื่อมจาก Macrocell ไปยังขา I/O ของตัวชิพ วงจรในส่วนของ I/O Block จะประกอบด้วยส่วนสำคัญ 5 ส่วน คือ Input Buffer ทำหน้าที่รับและปรับสภาพสัญญาณลอจิกที่ป้อนเข้าที่ขา I/O ของ CPLD Output Buffer ทำหน้าที่ควบคุมการส่งค่า
8
สัญญาณลอจิกออกทางขา I/O ของ CPLD วงจรส่วนนี้สามารถควบคุมค่า Slew Rate และ ค่า Global Tri-state (GTS) และ Output Enable (OE)ที่ต่อสัญญาณควบคุมมาจาก Product Term ได้โดยตรง
ที่ขา I/O ยังมีวงจรควบคุม Pull-up Resistor ซึ่งต่ออยู่กับ VCCIO ซึ่งมีหน้าที่กำหนดให้ขา I/O เกิด
Pull-up ให้เป็นลอจิก High เพื่อป้องกันสัญญาณรบกวนขณะที่มีการโปรแกรมตัวชิพ และวงจร User-
Programmable Ground มีไว้เพื่อให้ผู้ใช้งานโปรแกรมให้ลงกราวด์ กรณีที่ขาI/Oไม่ได้ถูกใช้งาน
รูปที่ 6 รูปแสดงวงจรในส่วนของ I/O Block และ Global Tri-State
9
การโปรแกรมตัวชิพ CPLD
ชิพ CPLD ตระกูล XC9500 สามารถทำการโปรแกรมได้ในขณะมีไฟเลี้ยงวงจร และวงจรทำงานอยู่ได้ ซึ่งเรียกว่า In – System Programming โดยใช้มาตรฐาน Protocol JATAG แบบ 4 ขั้ว
เป็นไปตามมาตรฐาน IEEE 1149.1 Boundary-Scan (JTAG) โดยสามาถโปรแกรมซ้ำได้มากกว่า 10000 ครั้ง
ลำดับชั้นความปลอดภัยของการออกแบบ
ชิพ CPLD ตระกูล XC9500 สามารถป้องกันข้อมูลโปรแกรมไว้ได้อย่างสมบูรณ์ ทั้งอ่านและเขียน ซึ่งผู้ใช้สามารถกำหนดได้โดยการเซ็ตค่า read security bits และ write security bits ตาม
ตารางในรูปที่ 6 ผใช้สามรถกำหนดได้โดยขณะที่อยู่ใน JTAG Program ู้
รูปที่ 6 แสดงระดับการกำหนดระดับป้องกันข้อมูลโปรแกรมทั้งอ่านและเขียน
คุณสมบัติขณะเริ่มทำงาน ( Power- Up Characteristics )
คุณสมบัติขณะเริ่มทำงานของ CPLD ตระกูล XC9500 ที่ใช้แรงเคลื่อน 5 V เมื่อเริ่มจ่ายไฟเข้าเลี้ยงตัวชิพ CPLD วงจรภายในจะถูกควบคุมให้อยู่ในภาวะสงบจนแรงเคลื่อนมีระดับถึงระดับความปลอดภัย(Safe Level Voltage) ประมาณ 3.8 V ในระดับนี้ ค่า Pull-Up Resister จะถูกยกเลิก และ
รีจิสเตอร์ทุกตัวในวงจรจะถูกกำหนดค่าที่ตั้งไว้ตามที่โปรแกรมไว้(Initialized) เวลาในการใช้ในการเริ่มทำงานปรกติหลังจากเริ่มจ่ายไฟเลี้ยงจะใช้เวลาประมาณ 100 - 300 ไมโครวินาที ทั้งนี้ขึ้นอยู่กับขนาดหรือ เบอร์ชิพ โดยเริ่มตั้งแต่ XC9536 ไปจนถึง XC95288
10
รูปที่ 7 กราฟแสดงคุณสมบัติภาวะเริ่มทำงาน ( Power- Up Characteristics )
และภาวะการหยุดทำงาน
เครื่องมือที่ใช้ในการพัฒนาและออกแบบวงจร ( Development System Support)
ในการพัฒนาและออกแบบวงจรลอจิกที่จะใช้โปรแกรมลงตัวชิพ CPLD ตระกูล XC9500
เราใช้โปรแกรม XILINX Foundation และ XILINX Web Pack ซึ่งจะรองรับการออกแบบได้ทั้งการเขียนเป็นวงจร Schematic และการใช้โปรแกรมภาษา ABEL-HDL และ VHDL นอกนั้นยังรองรับการใช้ภาษา Verilog และการเขียนเป็น State Diagram อีกด้วย สำหรับในเอกสารเล่มนี้จะเน้นการใช้ภาษา ABEL-HDL เป็นหลักเนื่องจากเป็นภาษาที่มีโครงสร้างคล้ายกันกับภาษาปาสคาล และภาษาซี
ตัวอย่าง ภาษาที่ใช้ในการเขียนโปรแกรมเพื่อออกแบบวงจรลอจิก
module mygate1
Title 'mygate1'
Declarations
A PIN;
B PIN;
EN PIN;
AND_OUT PIN istype 'com';
OR_OUT PIN istype 'com';
NOT_A PIN istype 'com';
SUM_OUT PIN istype 'com';
C_OUT PIN istype 'com';
Equations
AND_OUT = A & B;
OR_OUT = A # B;
NOT_A = !A;
SUM_OUT = A $ B;
C_OUT = A&B;
end mygate1
รูปที่ 8 ภาษา ABEL-HDL
11
- 4 to 1 multiplexer design with case construct
SEL: in STD_LOGIC_VECTOR(1 downto 0);
A, B, C, D:in STD_LOGIC;
MUX_OUT: out STD_LOGIC;
process (SEL, A, B, C, D)
begin
case SEL is
when "00" => MUX_OUT <= A;
when "01" => MUX_OUT <= B;
when "10" => MUX_OUT <= C;
when "11" => MUX_OUT <= D;
end case;
end process;
รูปที่ 9 ภาษา VHDL
รูปที่ 10 ตัวอย่างการเขียน State Diagram




http://www.astronlogic.com/faq.html

ไม่มีความคิดเห็น:

แสดงความคิดเห็น