วันอังคารที่ 4 พฤศจิกายน พ.ศ. 2557

การทดลองที่ 6.1

การออกแบบวงจร 3 to 8 decorder


วัตถุประสงค์ในการทดลอง

1.    ฝึกการออกแบบวงจร 3 to 8 decorder โดยใช้โปรแกรม Quartus
2.   สามารถออกแบบวงจรโดยใช่ลอจิเกตพื้นฐาน และใช้ภาษา VHDL ในการออกแบบได้
3.   สามารถทดลองกับบอร์ด FPGA ได้อย่างถูกต้องเหมาะสมได้


อุปกรณ์ที่ใช้ในการทดลอง  

1. บอร์ด Altera FPGA Board (WARRIOR CYCLONE3 DEV)  1 บอร์ด
2. สายดาวน์โหลด ByteBlaster II และ USB Blaster 1 สาย
3. โปรแกรม Altera Quartus II Web Edition (version 11.1 ขึ้นไป)


โจทย์
1) จงออกแบบวงจร 3-to-8 decoder มีทำงานตามข้อกำหนดต่อไปนี้
- มีอินพุต A(2:0) และเอาต์พุต Y(7:0)
ถ้า A(2:0) = "000" จะได้ Y(7:0) = "00000001"
ถ้า A(2:0) = "001" จะได้ Y(7:0) = "00000010"
ถ้า A(2:0) = "010" จะได้ Y(7:0) = "00000100"
.......
ถ้า A(2:0) = "111" จะได้ Y(7:0) = "10000000"
- อินพุต A(2:0) ให้ใช้สวิตช์เลื่อน (Slide Switches) บนบอร์ด FPGA
- เอาต์พุต Y(7:0) ให้ใช้ LEDs บนบอร์ด FPGA
การออกแบบวงจร ให้ใช้วิธีดังต่อไปนี้ (สร้าง Design Project สำหรับแต่ละกรณี)
- ใช้วิธีวาดวงจร โดยใช้ลอจิกเกตพื้นฐาน อย่างเช่น AND, OR, NOT
- ใช้ภาษา VHDL ในการออกแบบ
- ทดลองในบอร์ด FPGA และเขียนรายงานการทดลอง

ขั้นตอนและผลการทดลอง

1) เตรียมอุปกรณ์

Altera FPGA Board


ByteBlaster II และ USB Blaster 


โปรแกรม Altera Quartus II Web Edition 

2.) วาดวงจร 3 to 8 decorder โดยใช้ลอจิกเกตพื้นฐาน อย่างเช่น AND, OR, NOT 
ด้วยโปรแกรม Quartus 
3.) ใช้ภาษา VHDL ในการออกแบบวงจรตามที่โจทย์กำหนด
1.             สร้างโปรเจคสำหรับการทดลอง โดยทำการเลือก
-                   เลือกชิปที่ตรงกับบอร์ด FPGA เป็น EP3C10E144C8
-                   Device Family ตระกูล Cyclone III
-                   Design synthesis เลือก ModelSim-Altera สำหรับเครื่องมือการจำลองการทำงาน (Simulation)
โดยใช้ภาษา VHDL
code
library ieee, work;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
entity tb decoder tb_decoder3_to_8 is
end tb_decoder3_to_8;
architecture testbench of tb_decoder3_to_8 is
component decoder3_to_8 is
port(
I : in std_logic_vector( 2 downto 0 );
O : out std_logic_vector( 7 downto 0 ) );
end component;
signal t_I : std_logic_vector( 2 downto 0 );
signal t_O : std_logic_vector( 7 downto 0 );
begin
DUT: decoder decoder3_to_8 port map( I => t I_ , O => t O_ );
process begin
t_I <= "000";
for i in 0 to 7 loop
t_I <= std_logic_vector( to_unsigned(i, 3) );
wait for 100 ns;
end loop;
end process;
end testbench;

4.) ทำการ Analysis & Synthetic เพื่อวิเคราะห์และสังเคราะห์วงจรดิจิทัลจากโค้ด VHDL
5.) กำหนดหมายเลขขาอินพุต-เอาต์พุตสำหรับวงจร โดยใช้คำสั่ง Pin Planner


ถ้ามีการใช้ LED จากบอร์ด FPGA ให้เพิ่มชื่อสัญญาณ LED_54 ที่ขา PIN_54 และกำหนดให้เป็น As output, driving GND โดย ขา 54 ต่ออยู่กับสัญญาณ LED_54 ที่เป็นตัวควบคุมการทำงานของ LEDs บนบอร์ดทดลอง FPGA ที่ใช้

6.) ทำการ Fitter และ Assembler


7.) ใช้คำสั่ง Programmer เพื่อทำการรันโค้ดที่ได้บนวงจร FPGA Board

8.) นำไปทดลองบนบอร์ด  FPGA 

บันทึกผลการทดลอง

จากการทดลองข้อที่ 2 :
การวาดวงจร 3 to 8 decorder

จากการทดลองข้อที่ 3 :