VHDL (VHSIC Hardware Description Language) เป็นภาษาที่มีพลังและหลากหลายสำหรับการอธิบายฮาร์ดแวร์ ซึ่งใช้ในการออกแบบ การจำลอง และการสังเคราะห์ระบบอิเล็กทรอนิกส์ดิจิทัล พัฒนาขึ้นในช่วงปี 1980 สำหรับโครงการวงจรรวมความเร็วสูงมาก (VHSIC) ของกระทรวงกลาโหมสหรัฐอเมริกา VHDL ช่วยให้นักวิศวกรสามารถสร้างโมเดลเชิงนามธรรมของพฤติกรรมและโครงสร้างของฮาร์ดแวร์ ความสามารถในการอธิบายระบบที่ซับซ้อนทำให้มันเป็นสิ่งจำเป็นในหลายอุตสาหกรรม โดยเฉพาะสำหรับการออกแบบ FPGA (Field Programmable Gate Array) และ ASIC (Application-Specific Integrated Circuit)
VHDL ถูกสร้างขึ้นในช่วงต้นปี 1980 เป็นส่วนหนึ่งของความพยายามในการทำให้การออกแบบวงจรดิจิทัลเป็นมาตรฐาน ภาษาได้รับการพัฒนาโดยทีมงานที่นำโดย Peter Ashenden ที่กระทรวงกลาโหมสหรัฐอเมริกาเพื่อตอบสนองความต้องการในการอธิบายฮาร์ดแวร์อย่างสม่ำเสมอ ความตั้งใจเริ่มแรกคือเพื่ออำนวยความสะดวกในการจัดทำเอกสารการออกแบบที่มีอยู่สำหรับโครงการ VHSIC แต่ได้พัฒนาเป็นภาษาที่สมบูรณ์สำหรับการอธิบายฮาร์ดแวร์
ในปี 1987 VHDL ได้รับการทำให้เป็นมาตรฐานโดย IEEE ในชื่อ IEEE 1076 ตั้งแต่นั้นมาได้มีการอัปเดตหลายครั้ง โดยมี IEEE 1076-1993 และ IEEE 1076-2002 เป็นการปรับปรุงที่สำคัญ ภาษาได้ถูกขยายเพื่อรวมโครงสร้างที่สนับสนุนการตรวจสอบการออกแบบ ข้อจำกัดในการสังเคราะห์ และความสามารถในการจำลอง
ในปัจจุบัน VHDL ถูกใช้อย่างแพร่หลายในทั้งสถาบันการศึกษาและอุตสาหกรรมสำหรับการออกแบบระบบไฟฟ้าที่ซับซ้อน ไวยากรณ์และพฤติกรรมของมันได้รับอิทธิพลจากภาษาการเขียนโปรแกรมเช่น Ada, Pascal และ C เครื่องมือหลายอย่างสำหรับการจำลองและการสังเคราะห์สามารถตีความโค้ด VHDL ได้ และมักจะใช้ร่วมกับภาษาการอธิบายฮาร์ดแวร์อื่น ๆ โดยเฉพาะ Verilog
VHDL เป็นภาษาที่มีประเภทที่เข้มงวด หมายความว่าตัวแปรทุกตัวต้องถูกประกาศด้วยประเภทเฉพาะก่อนที่จะถูกใช้งาน ซึ่งช่วยป้องกันข้อผิดพลาดทั่วไปหลายประการ
signal CLK : std_logic; -- การประกาศสัญญาณประเภท std_logic
VHDL รองรับการดำเนินการพร้อมกันของคำสั่ง กระบวนการหลายอย่างสามารถทำงานพร้อมกัน ซึ่งเป็นสิ่งจำเป็นสำหรับการจำลองพฤติกรรมของฮาร์ดแวร์
process (CLK)
begin
if rising_edge(CLK) then
-- งานที่ต้องทำ
end if;
end process;
VHDL ใช้โมเดลเอนทิตี-สถาปัตยกรรม ซึ่งเอนทิตีจะอธิบายอินเตอร์เฟซของส่วนประกอบฮาร์ดแวร์ ในขณะที่สถาปัตยกรรมจะอธิบายพฤติกรรมภายในของมัน
entity AND_Gate is
Port ( A, B : in std_logic;
Y : out std_logic);
end AND_Gate;
architecture Behavior of AND_Gate is
begin
Y <= A and B;
end Behavior;
VHDL มีประเภทข้อมูลในตัวหลายประเภท รวมถึงประเภทสเกลาร์ (เช่น integer, bit) ประเภทคอมโพสิต (เช่น array, record) และประเภทการเข้าถึง
type MyArray is array (0 to 9) of integer; -- การประกาศอาเรย์
การกำหนดสัญญาณเกิดขึ้นพร้อมกันใน VHDL คุณสามารถขับเคลื่อนสัญญาณโดยใช้การกำหนดที่ถูกดำเนินการเมื่อเกิดเหตุการณ์
signal C : std_logic;
C <= A and B; -- C จะถูกอัปเดตเมื่อ A หรือ B เปลี่ยน
VHDL รองรับแพ็คเกจ ซึ่งช่วยให้ผู้ใช้สามารถกำหนดส่วนประกอบและประเภทที่สามารถนำกลับมาใช้ใหม่ได้ แพ็คเกจช่วยในการจัดระเบียบโค้ดและส่งเสริมการนำกลับมาใช้ใหม่
package MyLib is
type MyType is array (0 to 7) of std_logic_vector(3 downto 0);
end MyLib;
VHDL อนุญาตให้มีการตั้งค่าการกำหนดค่าที่ระดับสูงขึ้น ซึ่งช่วยให้สามารถเลือกสถาปัตยกรรมที่แตกต่างกันสำหรับเอนทิตี
configuration MyConfig of AND_Gate is
for Behavior
end for;
end MyConfig;
VHDL ช่วยอำนวยความสะดวกในการสร้าง test benches สำหรับการจำลองการออกแบบฮาร์ดแวร์ Test bench ประกอบด้วยอินสแตนซ์ของการออกแบบที่อยู่ระหว่างการทดสอบและใช้แรงกระตุ้น
entity TB_AND_Gate is
end TB_AND_Gate;
architecture sim of TB_AND_Gate is
signal A, B : std_logic;
signal Y : std_logic;
begin
uut: entity work.AND_Gate port map (A, B, Y);
-- กระบวนการกระตุ้นที่นี่
end sim;
Assertions สามารถใช้เพื่อตรวจสอบคุณสมบัติระหว่างการจำลองและช่วยในการดีบักการออกแบบ
assert (A = '1') report "A is not high" severity error;
Generics อนุญาตให้มีการพารามิเตอร์การออกแบบ ทำให้มีความยืดหยุ่นและสามารถนำกลับมาใช้ใหม่ได้โดยไม่ต้องเปลี่ยนตรรกะหลัก
entity Counter is
generic (N : integer := 4);
port (CLK : in std_logic;
COUNT : out std_logic_vector(N-1 downto 0));
end Counter;
มี Integrated Development Environments (IDEs) และเครื่องมือหลายตัวที่สนับสนุนการพัฒนา VHDL รวมถึง:
ในการสร้างโปรเจกต์ VHDL นักออกแบบมักจะเขียนโค้ด VHDL ของตนในไฟล์ .vhdl
หรือ .vhd
สร้าง test bench สำหรับการจำลอง และใช้เครื่องมือที่เหมาะสมในการสังเคราะห์การออกแบบให้เป็นฮาร์ดแวร์เป้าหมาย กระบวนการมักจะประกอบด้วย:
VHDL ถูกใช้เป็นหลักในการออกแบบระบบดิจิทัลที่ต้องการการทำงานและเวลาที่แม่นยำ การใช้งานของมันรวมถึง:
VHDL สามารถเปรียบเทียบกับภาษาการเขียนโปรแกรมอื่น ๆ หลายภาษา ซึ่งแต่ละภาษามีคุณสมบัติและการใช้งานที่เป็นเอกลักษณ์:
C และ C++ เป็นภาษาการเขียนโปรแกรมทั่วไปที่อนุญาตให้มีการเขียนโปรแกรมเชิงกระบวนการและเชิงวัตถุ ในขณะที่ VHDL ถูกออกแบบมาโดยเฉพาะสำหรับการอธิบายฮาร์ดแวร์ โดยมุ่งเน้นที่การดำเนินการพร้อมกันมากกว่าลำดับ
Verilog เป็นอีกหนึ่งภาษาการอธิบายฮาร์ดแวร์ที่มีความคล้ายคลึงกับ VHDL แต่โดยทั่วไปถือว่ามีความกระชับน้อยกว่า Verilog ใช้ไวยากรณ์ที่สั้นกว่าและมักจะได้รับความนิยมสำหรับการออกแบบในระดับระบบ
Python เป็นภาษาสคริปต์ระดับสูงที่โดดเด่นในด้านการพัฒนาแอปพลิเคชันอย่างรวดเร็ว แต่ไม่ได้ออกแบบมาเพื่อการอธิบายฮาร์ดแวร์โดยตรง อย่างไรก็ตาม ไลบรารีเช่น MyHDL อนุญาตให้โค้ด Python ถูกแปลงเป็น VHDL
MATLAB ใช้สำหรับการคำนวณเชิงตัวเลขและการพัฒนาอัลกอริธึม แต่สามารถรวมเข้ากับ VHDL สำหรับการใช้งานฮาร์ดแวร์ผ่าน HDL Coder และ Simulink
Rust และ Ada มีคุณสมบัติที่ส่งเสริมความปลอดภัยของหน่วยความจำและการเขียนโปรแกรมพร้อมกัน แต่ไม่ได้มีความเชี่ยวชาญเฉพาะด้านการอธิบายฮาร์ดแวร์ VHDL มีความโดดเด่นในด้านการทำให้ฮาร์ดแวร์เป็นนามธรรมซึ่งเป็นเอกลักษณ์ในหมู่ภาษาต่าง ๆ เหล่านี้
การแปลโค้ดจากภาษาต่าง ๆ เป็น VHDL มักต้องพิจารณาเรื่องการทำงานพร้อมกันและเวลา ซึ่งเป็นสิ่งที่มีอยู่ในงานออกแบบฮาร์ดแวร์
มีเครื่องมือการแปลจากแหล่งที่มาไปยังแหล่งที่หลายตัวที่สามารถช่วยในการแปลงโค้ด:
โดยสรุป VHDL ทำหน้าที่เป็นเครื่องมือที่สำคัญในการออกแบบดิจิทัล โดยมีคุณสมบัติที่แข็งแกร่ง ประวัติศาสตร์ที่หลากหลาย และการใช้งานที่หลากหลายในด้านอิเล็กทรอนิกส์และการคอมพิวเตอร์ ความสามารถเฉพาะตัวในการอธิบายฮาร์ดแวร์ทำให้มันแตกต่างจากภาษาการเขียนโปรแกรมที่ใช้กันอย่างแพร่หลายหลายภาษา