วันศุกร์ที่ 7 พฤศจิกายน พ.ศ. 2557

ออกแบบวงจร 3-to-8 Decoder

 วัตถุประสงค์การทดลอง
1.สามารถออกแบบวงจรถอดรหัส 3 to 8 Decoder โดยวิธีวาดวงจรและใช้ ภาษา VHDL ได้
2.เข้าใจหลักในการสร้างวงจรถอดรหัส แบบ 3 to 8 Decoder
3.สามารถใช้งานบอร์ด FPGA ในการทดลองวงจรที่ออกแบบได้
อุปกรณ์การทดลอง
1.บอร์ด FPGA  1 บอร์ด
2.โปรแกรม Quartus II
ขั้นตอนการทดลอง
1.สร้างโปรเจคใหม่สำหรับการออกแบบ
2.ออกแบบวงจร 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
3.ออกแบบโดยใช้วิธีวาดวงจร โดยใช้ลอจิกเกตพื้นฐาน อย่างเช่น AND, OR, NOT
4.ออกแบบโดยใช้ภาษา VHDL
5.ทดลองในบอร์ด FPGA
6.เขียนรายงานการทดลอง


 ผลการทดลอง
           Code VHDL
-- File: tb_decoder3_to_8.vhd
-- Target Board: Cyclone III,EP3C10E144C8
-- Pin Assignments
-- Input A (2:0)
--   PIN_23  to Switch[0]
--   PIN_24  to Switch[1]
--   PIN_25  to Switch[2]
-- OUTPUT Y(7:0)
--   PIN_50  to LEDS[7]
--   PIN_49  to LEDS[6]
--   PIN_46  to LEDS[5]
--   PIN_44  to LEDS[4]
--   PIN_43  to LEDS[3]
--   PIN_42  to LEDS[2]
--   PIN_39  to LEDS[1]
--   PIN_38  to LEDS[0]
-- LCD_E PIN_54 As output driving ground in pin planner

library ieee,work;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

-- เป็นส่วนในการส่งผ่านข้อมูล
entity tb_decoder3_to_8 is
end tb_decoder3_to_8;

--เป็นส่วนที่ใช้สำหรับบรรยายถึงฟังก์ชันการทำงานของโมดูล
architecture testbench of tb_decoder3_to_8 is
  component decoder3_to_8 is
  port( --ใช้กำหนดขาหรือสัญญาณของโมดูล
    A : in std_logic_vector(2 downto 0);--เป็นสัญญาณอินพุท
    Y : out std_logic_vector(7 downto 0)--เป็นสัญญาณเอาต์พุต
      );
end component;

signal t_A : std_logic_vector(2 downto 0);--ประกาศตัวแปร ชนิด signal ขนาด 3 Bit
signal t_Y : std_logic_vector(7 downto 0);--ประกาศตัวแปร ชนิด signal ขนาด 8 Bit

begin
 DUT: decoder3_to_8 port map( A => t_A,Y => t_Y);--เชื่อมต่อกับสัญญาณt_Aกับ Aและt_Yกับ Y

 process begin --เป็นคำสั่่งที่มีการทำงานเป็นแบบลำดับ
 t_A <= "000";
 for i in 0 to 7 loop --วน loop เพื่อ assignments ค่า ให้กับ t_A (เอาต์พุต)
 t_A <= std_logic_vector( to_unsigned(i,3));--โดยจะแปลงค่าที่วนแต่ละตัวเป็นแบบBinary ขนาด 3 Bit
 wait for 100 ns;
 end loop; -- จบ loop
 end process;-- จบ process

 end testbench;


ภาพการทดลอง


Decoder  : input 3 bit   (2 downto 0)   ‘000’
                 output 8 bit (7 downto 0)  ‘00000001’

Decoder  : input 3 bit   (2 downto 0)   ‘001’
                 output 8 bit (7 downto 0)  ‘00000010’

 
Decoder  : input 3 bit   (2 downto 0)   ‘010’
                 output 8 bit (7 downto 0)  ‘00000100’

Decoder  : input 3 bit   (2 downto 0)   ‘011’
                 output 8 bit (7 downto 0)  ‘00001000’

Decoder  : input 3 bit   (2 downto 0)   ‘100’
                 output 8 bit (7 downto 0)  ‘00010000’

Decoder  : input 3 bit   (2 downto 0)   ‘101’
                 output 8 bit (7 downto 0)  ‘00100000’


Decoder  : input 3 bit   (2 downto 0)   ‘110’
                output 8 bit (7 downto 0) ‘01000000’

Decoder  : input 3 bit   (2 downto 0)   ‘111’
                 output 8 bit (7 downto 0)  ‘10000000’

รูปที่ 1 ใช้ลอจิกเกตพื้นฐานออกแบบวงจรนับ 3 to 8 Decode

รูปที่ 2 ภาพ code VHDL ออกแบบวงจรนับ 3 to 8 Decoder
รูปที่ 3าพ Assignments Pin by pin planner
วีดีโอการทดลอง











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

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