วัตถุประสงค์การทดลอง
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) และเอาต์พุต 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
- เอาต์พุต 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;
|
ภาพการทดลอง
output
8 bit (7 downto 0) ‘00000001’
|
output 8
bit (7 downto 0) ‘00000010’
|
output 8 bit (7 downto 0) ‘00000100’
|
output 8
bit (7 downto 0) ‘00001000’
|
output 8
bit (7 downto 0) ‘00010000’
|
output 8
bit (7 downto 0) ‘00100000’
|
output 8 bit (7 downto 0) ‘01000000’
|
output 8
bit (7 downto 0) ‘10000000’
|
ไม่มีความคิดเห็น:
แสดงความคิดเห็น