- ฝึกการสร้างวงจรบนโปรแกรม Altera และเปลี่ยนจากวงจรเป็นโค้ด VHDL
- ทดลองเขียนโค้ด VHDL เพื่อรันบนบอร์ด FPGA
- ศึกษาการทำงานของโปรแกรมโดยขึ้นอยู่กับ Slide Switches บนบอร์ด FPGA
ถ้า 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 สำหรับแต่ละกรณี)
โค้ดที่ได้จากการสร้างวงจรลอจิกพื้นฐาน
CODE….
LIBRARY
ieee;
USE
ieee.std_logic_1164.all;
LIBRARY
work;
ENTITY
decoder3_to_8 IS
PORT
(
A2 : IN STD_LOGIC; //input ของระบบโดยรับมาจากสวิตซ์เลื่อนจำนวน 3
บิต
A1 : IN STD_LOGIC;
A0 : IN STD_LOGIC;
Y7 : OUT STD_LOGIC; //output ของระบบแสดงผลออกทาง LED
จำนวน 8 ดวง
Y6 : OUT STD_LOGIC;
Y0 : OUT STD_LOGIC;
Y1 : OUT STD_LOGIC;
Y2 : OUT STD_LOGIC;
Y3 : OUT STD_LOGIC;
Y4 : OUT STD_LOGIC;
Y5 : OUT STD_LOGIC
);
END
decoder3_to_8;
ARCHITECTURE
bdf_type OF decoder3_to_8 IS
SIGNAL SYNTHESIZED_WIRE_12 : STD_LOGIC;
SIGNAL SYNTHESIZED_WIRE_13 : STD_LOGIC;
SIGNAL SYNTHESIZED_WIRE_14 : STD_LOGIC;
BEGIN
SYNTHESIZED_WIRE_12
<= NOT(A2); // Input ค่าตรงกันข้ามกับค่าที่รับเข้ามาทางสวิตซ์ของ
A2
SYNTHESIZED_WIRE_13
<= NOT(A1); // Input ค่าตรงกันข้ามกับค่าที่รับเข้ามาทางสวิตซ์ของ
A1
SYNTHESIZED_WIRE_14
<= NOT(A0); // Input ค่าตรงกันข้ามกับค่าที่รับเข้ามาทางสวิตซ์ของ
A0
//แสดงผลออกทาง Output Y0 – Y7
Y7 <=
SYNTHESIZED_WIRE_12 AND SYNTHESIZED_WIRE_13
AND SYNTHESIZED_WIRE_14;
Y6 <= A2 AND SYNTHESIZED_WIRE_13 AND
SYNTHESIZED_WIRE_14;
Y5 <=
SYNTHESIZED_WIRE_12 AND A1 AND
SYNTHESIZED_WIRE_14;
Y4 <= A2 AND A1 AND SYNTHESIZED_WIRE_14;
Y3 <=
SYNTHESIZED_WIRE_12 AND SYNTHESIZED_WIRE_13
AND A0;
Y2 <= A2 AND SYNTHESIZED_WIRE_13 AND A0;
Y1 <=
SYNTHESIZED_WIRE_12 AND A1 AND A0;
Y0 <= A2 AND A1 AND A0;
END
bdf_type;
|
1.2 ) ใช้ภาษา VHDL ในการออกแบบ
CODE….
library
ieee;
use
ieee.std_logic_1164.all;
entity
decoder3_to_8 is
port(
A : in std_logic_vector( 2 downto 0 ); //input ของระบบโดยรับมาจากสวิตซ์เลื่อน จำนวน 3บิต
Y : out std_logic_vector( 7 downto 0 ) //output ของระบบแสดงผลออกทาง LED จำนวน 8 บิต
);
end
decoder3_to_8;
architecture
dataflow of decoder3_to_8 is
begin
//แสดงผล Output (Y)
Y <= "00000001" when ( A =
"000" ) //จะแสดงผล
"00000001" เมื่อมี input เป็น "000"
else "00000010" when ( A =
"001" ) //จะแสดงผล
"00000010" เมื่อมี input เป็น "001"
else "00000100" when ( A =
"010" ) //จะแสดงผล
"00000100" เมื่อมี input เป็น "010"
else "00001000" when ( A =
"011" ) //จะแสดงผล
"00001000" เมื่อมี input เป็น "011"
else "00010000" when ( A =
"100" ) //จะแสดงผล
"00010000" เมื่อมี input เป็น "100"
else "00100000" when ( A =
"101" ) //จะแสดงผล
"00100000" เมื่อมี input เป็น "101"
else "01000000" when ( A =
"110" ) //จะแสดงผล
"01000000" เมื่อมี input เป็น "110"
else "10000000" when ( A =
"111" ) //จะแสดงผล
"10000000" เมื่อมี input เป็น "111"
else "- - - - - - - -"; //จะไม่มีการแสดงผลใดๆ
end
dataflow;
|
1.3 ) ทดลองในบอร์ด FPGA
และเขียนรายงานการทดลอง
กำหนดพอร์ตให้แก่ Output และ Input เพื่อเชื่อมต่อระหว่างตัวโปรแกรมกับบอร์ด FPGA
Node Name
|
Location
|
I/O
standard
|
Reserved
|
A[2]
|
PIN_25
|
3.3-V
LVTTL
|
|
A[1]
|
PIN_24
|
3.3-V
LVTTL
|
|
A[0]
|
PIN_23
|
3.3-V
LVTTL
|
|
Y[7]
|
PIN_50
|
3.3-V
LVTTL
|
|
Y[6]
|
PIN_49
|
3.3-V
LVTTL
|
|
Y[5]
|
PIN_46
|
3.3-V
LVTTL
|
|
Y[4]
|
PIN_44
|
3.3-V
LVTTL
|
|
Y[3]
|
PIN_43
|
3.3-V
LVTTL
|
|
Y[2]
|
PIN_42
|
3.3-V
LVTTL
|
|
Y[1]
|
PIN_39
|
3.3-V
LVTTL
|
|
Y[0]
|
PIN_38
|
3.3-V
LVTTL
|
|
LCD_E
|
PIN_54
|
3.3-V
LVTTL
|
As
output driving ground
|
ตารางที่กำหนดพอร์ตต่างๆเพื่อเชื่อมต่อกับบอร์ด
FPGA
รูปภาพของการแสดงผลออกจากบอร์ด
FPGA


INPUT FORM SWITCH
IS “000” INPUT FORM SWITCH IS “001”


INPUT FORM SWITCH IS “010” INPUT FORM SWITCH IS “011”


INPUT FORM SWITCH IS “100”
INPUT FORM SWITCH IS “101”


INPUT FORM SWITCH
IS “110” INPUT FORM SWITCH IS “111”
ลิงค์ : คลิปแสดงผลการทดลอง
ไม่มีความคิดเห็น:
แสดงความคิดเห็น