CONTACT | TEL : 02-728-3440, EMAIL : SALES@ASTRONLOGIC.COM
การออกแบบวงจรรับ – ส่งข้อมูลแบบอนุกรมด้วย FPGA ตอนที่ 2

» การออกแบบวงจรรับ – ส่งข้อมูลแบบอนุกรมด้วย FPGA ตอนที่ 2

จากเนื้อหาในตอนที่ 1 ท่านผู้อ่านคงทราบถึงหลักการการออกแบบวงจรรับ-ส่งข้อมูลแบบอนุกรมด้วย FPGA มาแล้ว ในตอนนี้จะเป็นการออกแบบในเชิงพฤติกรรมของวงจรรับ-ส่งข้อมูลแบบอนุกรม โปรแกรมสังเคราะห์ที่จะใช้ในการออกแบบจะเป็นโปรแกรม MAX+Plus II โดยมีคุณสมบัติของการรับ – ส่งข้อมูลดังนี้

Baud Rate = 9600 Bits/Sec, Data = 8 Bits, Start Bit = 1 Bit, Stop Bit = 1 Bit, Parity = none

ขั้นตอนการออกแบบวงจรรับ – ส่งข้อมูลด้วย FPGA
1.เริ่มต้นเปิดโปรแกรม MAX+plus II และตั้งชื่อโปรเจ็คเป็น SERIAL_COMM และเลือกชนิดของไฟล์ที่จะสร้างเป็น Text Editor File ดังรูปที่ 1

รูปที่ 1 เลือกชนิดของไฟล์ที่จะสร้างเป็น Text Editor File

2.หลังจากนั้นจะปรากฏ Text Editor ขึ้นมาดังรูปที่ 2 ให้เขียนโค็ดภาษา VHDL เพื่ออธิบายลักษณะพฤติกรรมของวงจรรับ – ส่งข้อมูลแบบอนุกรม ดังโค็ดในรูปที่ 3

รูปที่ 2 Text Editor

library ieee;
use ieee.std_logic_1164.all;
entity SERIAL_COMM is
port(
BAUD_RATE : in std_logic;
RX : in std_logic;
TX_EN : in std_logic;
DATA_TX : in std_logic_vector(7 downto 0);
TX : out std_logic;
DATA_RX : out std_logic_vector(7 downto 0);
RX_EN : out std_logic );
end SERIAL_COMM;

architecture rtl of SERIAL_COMM is
type State_Type_RX is (Idel,ReceiveData,Stop);
type State_Type_TX is (Idel,Start,TransData,Stop);
signal State_RX : State_Type_RX := Idel;
signal State_TX : State_Type_TX;
begin process(BAUD_RATE,TX_EN,DATA_TX)
variable TX_Data_Count : integer range 0 to 7 := 0;
begin
if BAUD_RATE'Event and BAUD_RATE = '1' then
case State_TX is
when Idel =>
TX <= '1';
if TX_EN = '1' then
TX_Data_Count := 0;
State_TX <= Start;
else
TX_Data_Count := 0;
State_TX <= Idel;
end if;
when Start =>
TX <= '0';
TX_Data_Count := 0;
State_TX <= TransData;
when TransData =>
if TX_Data_Count = 7 then
TX <= DATA_TX(TX_Data_Count);
State_TX <= Stop;
else
TX <= DATA_TX(TX_Data_Count);
TX_Data_Count := TX_Data_Count + 1;
State_TX <= TransData;
end if;
when Stop =>
TX <= '1';
TX_Data_Count := 0;
State_TX <= Idel;
when others =>
TX_Data_Count := 0;
TX <= '1';
State_TX <= Idel;
end case;
end if;
end process;
process(BAUD_RATE,RX)
variable RX_Data_Count : integer range 0 to 7 := 0;
variable Buffer_RX : std_logic_vector(7 downto 0);
begin
if BAUD_RATE'Event and BAUD_RATE = '1' then
case State_RX is
when Idel =>
RX_EN <= '0';
if RX = '0' then
RX_Data_Count := 0;
State_RX <= ReceiveData;
Else
RX_Data_Count := 0;
State_RX <= Idel;
end if;
when ReceiveData =>
RX_EN <= '0';
if RX_Data_Count = 7 then
Buffer_RX(RX_Data_Count) := RX;
State_RX <= Stop;
Else
Buffer_RX(RX_Data_Count) := RX;
RX_Data_Count := RX_Data_Count + 1;
State_RX <= ReceiveData;
end if;
when Stop =>
RX_Data_Count := 0;
DATA_RX <= Buffer_RX;
RX_EN <= '1';
State_RX <= Idel;
when others =>
RX_Data_Count := 0;
RX_EN <= '0';
State_RX <= Idel;
end case;
end if;
end process;
end rtl;

รูปที่ 3 โค็ดภาษา VHDL ของวงจรรับ - ส่งข้อมูลแบบอนุกรม


3.หลังจากนั้นให้ทำการบันทึกโค็ดที่ได้เขียนขึ้นเป็นไฟล์ชื่อ SERIAL_COMM.VHD ทำการตรวจสอบไฟล์ VHDL ที่เขียนว่าถูกต้องตามหลักไวยากรณ์หรือไม่ โดยเลือกที่เมนู File เ Project เ Save & Check จากนั้นจะมี Dialog Compiler ปรากฏขึ้นมา หากมี errors หรือ warning ให้ทำการตรวจสอบโค็ดภาษา VHDL ว่าตรงกับรูปที่ 3 หรือไม่ และให้ทำการแก้ไขให้เรียบร้อย

4.เมื่อตรวจสอบโค็ดภาษา VHDL ที่ได้เขียนขึ้นเรียบร้อยแล้วและไม่มีปัญหาใดๆ ต่อไปจะทำการ Compiler และ Simulate เพื่อดูผลการทำงานว่าตรงกับที่ได้ออกแบบไว้หรือเปล่า ในการ Compiler จะเป็นการ Compiler แบบ Functional เพื่อดูผลทางด้าน Function การทำงานว่าตรงกับที่ออกแบบไว้หรือไม่ โดยไม่พิจารณาตัวแปรทางด้านค่าเวลาหน่วงของ FPGA เลือกที่เมนู MAX+plus II เ Compiler เ Processing เ Functional SNF Extractor หลังจากนั้นให้คลิกที่ปุ่ม Start ดังรูปที่ 4 เพื่อ Compiler วงจร

รูปที่ 4 การ Compiler แบบ Function

5.หลังจากนั้นจะเป็นการ Simulate เพื่อดูผลการทำงานของวงจร โดยคลิกที่ File เ New… เลือกชนิดของไฟล์ที่จะสร้างเป็น Waveform Editor File ดังรูปที่ 5 จากนั้นจะปรากฏหน้าต่าง Waveform Editor ขึ้นมา

รูปที่ 5 เลือกชนิดของไฟล์เป็นแบบ Waveform Editor File
6.ทำการโหลดโหนดที่ต้องการจะ Simulate ขึ้นมา โดยการคลิกเลือกที่เมนู Node เ Enter Nodes from SNF… จะมี Dialog Enter Nodes from SNF ปรากฏขึ้นมา ดับเบิ้ลคลิกเลือก Node อินพุทและเอาพุทที่ต้องการ Simulate ในช่อง Available Node & Groups โดยเลือกโหนดดังต่อไปนี้ BAUD_RATE (I) , RX (I) , TX_EN (I) , DATA_TX (I) , TX (O) , DATA_RX (O) , RX_EN (O) ดังรูปที่ 6

รูปที่ 6 การเลือกโหนดที่ต้องการ Simulate

7.หลังจากนั้นทำการกำหนดระยะเวลาในการ Simulate โดยเลือกที่ File เ End Time.. กำหนดให้มีค่าเท่ากับ 1.0 uS กำหนด Grid Size โดยคลิกเลือกที่เมนู Options เ Grid Size…. ให้มีค่าเท่ากับ 20.0nS และกำหนดลักษณะของโหนดอินพุทต่างๆ ให้มีลักษณะเหมือนในรูปที่ 7

รูปที่ 7 กำหนดลักษณะสัญญาณทางอินพุท

8.เมื่อกำหนดลักษณะ Waveform ให้แก่อินพุทต่างๆ ดังในรูปที่ 7 แล้ว หลังจากนั้นทำการบันทึกเป็นไฟล์ชื่อ SERIAL_COMM.SCF และทำการ Simulate โดยคลิกเลือกที่ MAX+plus II เ Simulate จะมี Dialog Simulator ปรากฏขึ้นมา ให้คลิกที่ปุ่ม Start เพื่อทำการ Simulate จะได้ผลการ Simulate ดังรูปที่ 8

รูปที่ 8 ผลการ Simulate วงจรรับ - ส่งข้อมูลแบบอนุกรม

จากผลการ Simulate ในรูปที่ 8 สัญญาณ BAUD_RATE เป็นสัญญาณกระตุ้นการทำงานของวงจรทั้งหมด ความเร็วในการรับ – ส่งข้อมูลขึ้นอยู่กับความถี่ของสัญญาณ BAUD_RATE สัญญาณ RX เป็นสัญญาณของข้อมูลแบบอนุกรมที่ส่งมาจากภาคส่ง เช่น คอมพิวเตอร์ , ไมโครคอนโทรลเลอร์ เป็นต้น สามารถแบ่ง State ต่างๆ ออกได้เป็น 4 State คือ
State 1 เป็นสถานะที่รอข้อมูลส่งมา จะมีค่าเป็นลอจิก “1” จนกว่าจะมีบิตเริ่มต้นของข้อมูลส่งมาจึงจะเปลี่ยนสถานะเป็น State 2
State 2 เมื่อมีบิตเริ่มต้นข้อมูลส่งมาจะทำการอ่านข้อมูล เข้าสู่ State 3
State 3 เป็นการอ่านข้อมูลอนุกรมที่ส่งออกมาจนครบทั้ง 8 บิตเข้าสู่ State 4
State 4 ตรวจสอบบิตสิ้นสุดของข้อมูล และให้ค่าของข้อมูลที่รับมาได้ ออกมาที่สัญญาณ DATA_RX[7..0] หลังจากนั้นจะกลับมาอยู่ที่ State 1 อีกครั้ง


ในส่วนของสัญญาณ Tx เป็นสัญญาณอนุกรมที่จะส่งออกจาก FPGA ให้กับตัวรับต่างๆ เช่น คอมพิวเตอร์ , ไมโครคอนโทรลเลอร์ เป็นต้น สามารถแบ่ง State ต่างๆ ออกได้เป็น 4 State
State 1 ในกรณีที่สัญญาณ TX_EN เป็นลอจิก “0” แสดงว่ายังไม่ต้องการจะส่งข้อมูลเพราะฉะนั้นจะทำให้สัญญาณ TX มีค่าเป็นลอจิก “1” จนกว่าสัญญาณ TX_EN จะมีค่าเป็นลอจิก “1” จึงจะเริ่มต้นกระบวนการส่งข้อมูล และเข้าสู่ State 2
State 2 ส่งบิตเริ่มต้นการส่งข้อมูลออกไป โดยการกำหนดให้สัญญาณ TX มีค่าเป็นลอจิก “0” และเข้าสู่ State 3
State 3 เป็นการส่งข้อมูลออกไปที่ละบิตจนครบทั้ง 8 บิต จึงจะเข้าสู่ State 4
State 4 เป็นการส่งบิตสิ้นสุดการส่งข้อมูลออกไปโดยจะทำให้สัญญาณ TX มีค่าเป็นลอจิก “1” จากนั้นจึงกลับมาที่ State 1 อีกครั้งหนึ่งเพื่อรอส่งข้อมูลครั้งต่อไป

9.เมื่อทำมาถึงตรงนี้แสดงว่าวงจรรับ – ส่งข้อมูลแบบอนุกรมเป็นอันเสร็จเรียบร้อย เราจะได้สัญลักษณ์ที่สื่อถึงวงจรรับส่งข้อมูลแบบอนุกรมดังรูปที่ 9

รูปที่ 9 สัญลักษณ์ของวงจรรับ – ส่งข้อมูลแบบอนุกรม

ทดสอบสู่การนำไปใช้งานจริง
10.ในการทดสอบการทำงานของวงจรรับ – ส่งข้อมูลแบบอนุกรมที่ได้ออกแบบมาว่าสามารถทำงานได้ถูกต้องหรือไม่ จะทำการทดสอบกับบอร์ดทดลอง FPGA รุ่น WIZARD FLEX-A01 ของบริษัทแอสทรอนลอ-จิกรีเสิร์ธแอนด์ดิวิลอปเมนต์ จำกัด ดังรูปที่ 10 ในการทดสอบจะต้องอาศัยวงจรอื่นๆ เพื่อต่อร่วมกันให้สามารถใช้งานได้ดังวงจรดังวงจรในรูปที่ 11


รูปที่ 10 บอร์ดทดลอง FPGA รุ่น WIZARD FLEX-A01

รูปที่ 11 วงจรทดสอบการทำงานของวงจรการรับ - ส่งข้อมูลแบบอนุกรม

จากวงจรในรูปที่ 11 เป็นวงจรทดสอบการทำงานของวงจรรับ – ส่งข้อมูลแบบอนุกรมที่ได้ออกแบบไว้ ภายในวงจรทดสอบจะประกอบด้วย โมดูลของวงจรต่างๆ 4 โมดูล ดังนี้
- DIV1000 เป็นโมดูลของวงจรหารความถี่ เนื่องจากภายในบอร์ด WIZARD FLEX-A01 ใช้แหล่งกำเนิดความถี่แบบ MODULE OSCILLATOR ความถี่ 9.6 MHz แต่ความถี่ที่เราจะใช้เป็น Baud Rate ให้กับวงจรรับ – ส่ง มีค่าเท่ากับ 9600 Hz เพราะฉะนั้นเราจะต้องทำการหารความถี่ที่ได้จาก MODULE OSCILLATOR ลง ให้เหลือ 9600 Hz ซึ่งค่าของตัวหารจะเท่ากับ 9.6 MHz / 9600 Hz เท่ากับ 1000 ซึ่งมีโค็ดภาษา VHDL ดังรูปที่ 12

library ieee;
use ieee.std_logic_1164.all;
entity Div1000 isport( Clk_in : in std_logic;
Clk_out : out std_logic );
end Div1000;

architecture rtl of Div1000 is
begin
process(Clk_in)
variable Clk_temp : std_logic := '0';
variable count : integer range 0 to 499 := 0;
begin
if Clk_in'Event and Clk_in = '1' then
if count < 499 then
count := count + 1;
Clk_temp := Clk_temp;
else
count := 0;
Clk_temp := not(Clk_temp);
end if;
Clk_out <= Clk_temp;
end if;
end process;
end rtl;

รูปที่ 12 โค็ดภาษา VHDL ของวงจรหาร 1000

- DFF8B เป็นโมดูลของวงจร D Flip Flop ทำหน้าที่ Latch ค่าข้อมูลที่รับมาได้ แสดงผลออกที่ LED[7..0] ซึ่งมีโค็ดภาษา VHDL ดังรูปที่ 13

library ieee;
use ieee.std_logic_1164.all;
entity DFF8B is
port( clk : in std_logic;
data_in : in std_logic_vector(7 downto 0);
data_out : out std_logic_vector(7 downto 0) );
end DFF8B;

architecture rtl of dff8b is
begin process(clk)
begin
if clk'event and clk = '0' then
data_out <= data_in;
end if;
end process;
end rtl;

รูปที่ 13 โค็ดภาษา VHDL ของวงจร D Flip Flop ขนาด 8 บิต

- ONEPULSE เป็นโมดูลรับค่าจากการกดสวิตช์ เมื่อมีการกด SW1 โมดูลนี้จะทำการ Debounce สัญญาณที่ได้จากการกดสวิตช์และให้ Pulse ออกมา 1 ลูกเท่านั้น ขนาดของ Pulse จะเท่ากับความถี่ที่ต่ออยู่กับอินพุท CLK ซึ่งมีโค็ดภาษา VHDL ดังรูปที่ 14

LIBRARY IEEE;
use ieee.std_logic_1164.all;
entity OnePulse is
port( Clk : in std_logic;
SW : in std_logic;
SW_Single_Pulse : out std_logic
);
end OnePulse;

architecture rtl of OnePulse is
signal sw_debounce_delay : std_logic;
signal power_on : std_logic;
begin
process(Clk)
begin
if (Clk'Event) and (Clk = '1') then
if power_on = '0' then
sw_single_pulse <= '0';
sw_debounce_delay <= '1';
power_on <= '1';
else
if (sw = '1') and (sw_debounce_delay = '0') then
sw_single_pulse <='1';
else sw_single_pulse <='0';
end if;
sw_debounce_delay <= sw;
end if;
end if;
end process;
end rtl;

รูปที่ 14 โค็ดภาษา VHDL ของวงจร ONEPULSE

- SERIAL_COMM เป็นโมดูลของวงจรรับ - ส่งข้อมูลแบบอนุกรมที่ได้ออกแบบไว้ก่อนหน้านี้

จากโค็ดภาษา VHDL ของวงจรต่างๆ ข้างต้นนำมาสร้างเป็นโมดูลของวงจรดังกล่าวด้วยโปรแกรม MAX+plus II วิธีการจะคล้ายกับการออกแบบวงจรรับ – ส่งข้อมูลแบบอนุกรมที่ได้กล่าวมาแล้ว จะทำให้ได้สัญลักษณ์ของวงจร DIV1000 , DFF8B และ ONEPULSE ดังรูปที่ 15

รูปที่ 15 สัญลักษณ์ของวงจรต่างๆ

11.เมื่อได้สัญลักษณ์ของวงจรอื่นๆ เรียบร้อยแล้ว ให้สร้าง Graphic File ขึ้นมาใหม่เพื่อวาดวงจรทดสอบการรับ – ส่งข้อมูลแบบอนุกรม ดังรูปที่ 16 และตั้งชื่อโปรเจ็กเป็น Test_Serial

รูปที่ 16 เลือกชนิดของไฟล์เป็น Graphic Editor File

12.ทำการวาดวงจรทดสอบการทำงานของวงจรรับ – ส่งข้อมูลแบบอนุกรมดังรูปที่ 11 บันทึกเป็นไฟล์ชื่อ Test_Serial.gdf ตรวจสอบความถูกต้องของการต่อวงจรโดยเลือกที่เมนู File เ Project เ Save & Check หลังจากนั้นทำการเลือกเบอร์ของ FPGA ที่จะใช้งานเลือกที่เมนู Assign เ Device… หลังจากนั้นจะมี Dialog Device ปรากฎขึ้นมาให้คลิกเลือก Device Family เป็น FLEX10K และ Devices : เป็น EPF10K10LC84-4 ดังรูปที่ 17

รูปที่ 17 เลือก FPGA ที่จะใช้งาน

13.หลังจากนั้นทำการเลือกโหมดการ Compiler เป็นแบบ Timing ซึ่งเป็นการ Compiler แบบพิจารณาค่าเวลาหน่วงของ FPGA เข้าไปด้วย โดยคลิกเลือกที่เมนู MAX+plus II เ Compiler เ Processing เ Timing SNF Extractor และคลิกที่ปุ่ม Start เพื่อเริ่มต้นการ Compiler ดังรูปที่ 18

รูปที่ 18 Compiler

14.เมื่อทำการ Compiler เสร็จเรียบร้อยแล้วต่อไปจะเป็นการจัดตำแหน่งขาของ FPGA เพื่อให้สอดคล้องกับอุปกรณ์ต่างๆ ที่ต่ออยู่กับขาของ FPGA โดยจะจัดให้สัญญาณ CLK ต่อกับ Clock ของบอร์ดทดลอง เพื่อทำหน้าที่กำหนดความเร็วในการส่งข้อมูล , สัญญาณ SW1 ต่อกับ SW1 ของบอร์ดทดลองเพื่อเป็นสวิตช์สำหรับส่งข้อมูล , สัญญาณ DSW[7..0] ต่อกับ DIP SW ของบอร์ดทดลองเพื่อกำหนดข้อมูลขนาด 8 บิตที่จะทำการส่ง , สัญญาณ RX จะต่อกับวงจรการรับ – ส่งข้อมูล (วงจร MAX232/ICL232) สำหรับรับข้อมูลแบบอนุกรม , สัญญาณ TX ต่อกับวงจรการรับ – ส่งข้อมูล (วงจร MAX232/ICL232) สำหรับส่งข้อมูลแบบอนุกรม และ สัญญาณ LED[7..0] จะต่อกับ LED ภายในบอร์ดทดลองสำหรับแสดงผลค่าข้อมูลขนาด 8 บิตที่รับมาได้ โดยเลื่อนเมาส์ไปคลิกที่ MAX+plus II เ Floorplan Editor หลังจากนั้นจะมี Dialog Floorplan Editor ปรากฎขึ้นมาให้ทำการจัดตำแหน่งขาของอินพุท / เอาท์พุทของวงจรดังตารางที่ 1

ตารางที่ 1 การจัดตำแหน่งขา

SIGNAL NAME
FPGA PIN
SIGNAL NAME
FPGA PIN
CLK
43
Rx
80
SW1
84
Tx
79
DSW7
53
LED7
18
DSW6
54
LED6
19
DSW5
58
LED5
21
DSW4
59
LED4
22
DSW3
60
LED3
23
DSW2
61
LED2
24
DSW1
62
LED1
25
DSW0
64
LED0
27

15.เมื่อจัดตำแหน่งขาเป็นที่เรียบร้อยแล้ว ให้ทำการบันทึกและ Compiler อีกครั้ง File เ Project เ Save & Compile เมื่อ Compile เสร็จแล้วให้ทำการโปรแกรมวงจรทดสอบที่ได้ออกแบบมาลงในบอร์ดทดลอง ดังรูปที่ 19

รูปที่ 19 การโปรแกรมลงบอร์ดทดลอง

รูปที่ 20 การต่อวงจร FPGA สำหรับทดสอบการรับ – ส่งข้อมูลแบบอนุกรม

20.สำหรับการทดสอบการทำงานจะทดลองสื่อสารข้อมูลแบบอนุกรมกับคอมพิวเตอร์ ให้นำสาย Serial มาเชื่อมต่อระหว่างบอร์ดทดลอง FPGA กับพอร์ตอนุกรมของคอมพิวเตอร์ สำหรับคอมพิวเตอร์จะต้องมีโปรแกรมรับ และส่งข้อมูลกับพอร์ตอนุกรม ในตัวอย่างนี้จะเป็นโปรแกรมที่เขียนขึ้นมาเองสำหรับรับ – ส่งข้อมูลแบบอนุกรม โปรแกรมสื่อสารกับพอร์ตอนุกรมนี้มีชื่อว่า COMPortTest หากผู้อ่านท่านใดต้องการ Source Code สามารถ Down Load ได้ที่ www.astronlogic.com ทำการเรียกโปรแกรม COMPortTest ขึ้นมาดังรูปที่ 21

รูปที่ 21 โปรแกรมรับ – ส่งข้อมูลแบบอนุกรม

ก่อนที่จะทำการรับ – ส่งข้อมูลใดๆ กับบอร์ด FPGA จะต้องทำการเลือกพอร์ตที่จะสื่อสารด้วยเสียก่อน เลื่อนเมาส์มาคลิกที่ปุ่ม Setup.. จะปรากฏ Dialog Setup ขึ้นมา ให้เลือก Port เป็นตำแหน่ง Port ที่เราต่อสายอยู่ กำหนด Baud Rate = 9600 , Data Bits = 8 , Stop Bits = 1 , Parity = None และคลิกที่ปุ่ม OK หลังจากนั้นให้คลิกที่ปุ่ม Connect.. เพื่อเชื่อมต่อกับพอร์ตอนุกรม เลือนเมาส์มาคลิกที่สัญลักษณ์ของ DIPSW ในช่อง SW Data Send ให้มีค่าข้อมูลเท่ากับ “00110001” และเลื่อนเมาส์มาคลิกที่ปุ่ม Send เพื่อส่งข้อมูลที่กำหนดไว้ไปยังบอร์ด FPGA ภายในบอร์ด FPGA เมื่อมีข้อมูลส่งมาจะแสดงค่าข้อมูลที่รับได้ที่ LED1 – LED8 สังเกตที่ LED1 – LED8 จะต้องสว่างเป็นค่าข้อมูลเดียวกับที่ส่งมาจากคอมพิวเตอร์ โดยที่ LED สว่างแทนค่าของลอจิก “1” และ LED ดับแทนค่าของลอจิก “0” เพราะฉะนั้นที่ LED จะต้องสว่างเป็น “00110001” ด้วย ทดลองส่งข้อมูลจากบอร์ด FPGA ไปให้คอมพิวเตอร์ โดยการเลื่อน DIPSW ที่บอร์ดทดลอง FPGA ให้มีค่าเท่ากับ “00110001” จากนั้นกด SW1 ที่บอร์ดทดลองเพื่อส่งข้อมูลจาก DIPSW ไปยังคอมพิวเตอร์ สังเกตผลลัพธ์ที่คอมพิวเตอร์ ในช่อง Received Data สัญลักษณ์ LED0 – LED7 จะต้องสว่างเหมือนกับค่าข้อมูลที่ส่งมานั้นคือ “00110001”

โปรแกรมทดสอบการเชื่อมต่อ Serial port

ถึงตรงนี้คิดว่าท่านผู้อ่านหลายท่านคงเห็นวิธีการออกแบบวงจรรับ – ส่งข้อมูลแบบอนุกรมด้วย FPGA แล้ว ท่านสามารถนำวิธีการต่างๆ เหล่านี้ไปประยุกต์ใช้งานเป็นวงจรสื่อสารข้อมูลแบบที่มีจำนวนบิตข้อมูลมากกว่า 8 บิตได้ หากท่านใดมีข้อส่งสัยสามารถสอบถามเพิ่มเติมได้ที่ email : support@astronlogic.com หรือเยี่ยมชมได้ที่ website : www.astronlogic.com