ภาษาการเขียนโปรแกรม VHDL

ภาษา VHDL

ภาพรวมของ VHDL

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;

การสร้าง Test Bench

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

Assertions สามารถใช้เพื่อตรวจสอบคุณสมบัติระหว่างการจำลองและช่วยในการดีบักการออกแบบ

assert (A = '1') report "A is not high" severity error;

Generics

Generics อนุญาตให้มีการพารามิเตอร์การออกแบบ ทำให้มีความยืดหยุ่นและสามารถนำกลับมาใช้ใหม่ได้โดยไม่ต้องเปลี่ยนตรรกะหลัก

entity Counter is
    generic (N : integer := 4);
    port (CLK : in std_logic;
          COUNT : out std_logic_vector(N-1 downto 0));
end Counter;

เครื่องมือและรันไทม์สำหรับนักพัฒนา

IDEs และเครื่องมือ

มี Integrated Development Environments (IDEs) และเครื่องมือหลายตัวที่สนับสนุนการพัฒนา VHDL รวมถึง:

การสร้างโปรเจกต์

ในการสร้างโปรเจกต์ VHDL นักออกแบบมักจะเขียนโค้ด VHDL ของตนในไฟล์ .vhdl หรือ .vhd สร้าง test bench สำหรับการจำลอง และใช้เครื่องมือที่เหมาะสมในการสังเคราะห์การออกแบบให้เป็นฮาร์ดแวร์เป้าหมาย กระบวนการมักจะประกอบด้วย:

  1. การเขียนโค้ด VHDL
  2. การคอมไพล์โค้ดโดยใช้เครื่องมือที่เลือก
  3. การจำลองและทดสอบการออกแบบ
  4. การสังเคราะห์การออกแบบสำหรับการใช้งานฮาร์ดแวร์

การใช้งาน VHDL

VHDL ถูกใช้เป็นหลักในการออกแบบระบบดิจิทัลที่ต้องการการทำงานและเวลาที่แม่นยำ การใช้งานของมันรวมถึง:

การเปรียบเทียบกับภาษาที่เกี่ยวข้อง

VHDL สามารถเปรียบเทียบกับภาษาการเขียนโปรแกรมอื่น ๆ หลายภาษา ซึ่งแต่ละภาษามีคุณสมบัติและการใช้งานที่เป็นเอกลักษณ์:

C และ C++

C และ C++ เป็นภาษาการเขียนโปรแกรมทั่วไปที่อนุญาตให้มีการเขียนโปรแกรมเชิงกระบวนการและเชิงวัตถุ ในขณะที่ VHDL ถูกออกแบบมาโดยเฉพาะสำหรับการอธิบายฮาร์ดแวร์ โดยมุ่งเน้นที่การดำเนินการพร้อมกันมากกว่าลำดับ

Verilog

Verilog เป็นอีกหนึ่งภาษาการอธิบายฮาร์ดแวร์ที่มีความคล้ายคลึงกับ VHDL แต่โดยทั่วไปถือว่ามีความกระชับน้อยกว่า Verilog ใช้ไวยากรณ์ที่สั้นกว่าและมักจะได้รับความนิยมสำหรับการออกแบบในระดับระบบ

Python

Python เป็นภาษาสคริปต์ระดับสูงที่โดดเด่นในด้านการพัฒนาแอปพลิเคชันอย่างรวดเร็ว แต่ไม่ได้ออกแบบมาเพื่อการอธิบายฮาร์ดแวร์โดยตรง อย่างไรก็ตาม ไลบรารีเช่น MyHDL อนุญาตให้โค้ด Python ถูกแปลงเป็น VHDL

MATLAB

MATLAB ใช้สำหรับการคำนวณเชิงตัวเลขและการพัฒนาอัลกอริธึม แต่สามารถรวมเข้ากับ VHDL สำหรับการใช้งานฮาร์ดแวร์ผ่าน HDL Coder และ Simulink

Rust และ Ada

Rust และ Ada มีคุณสมบัติที่ส่งเสริมความปลอดภัยของหน่วยความจำและการเขียนโปรแกรมพร้อมกัน แต่ไม่ได้มีความเชี่ยวชาญเฉพาะด้านการอธิบายฮาร์ดแวร์ VHDL มีความโดดเด่นในด้านการทำให้ฮาร์ดแวร์เป็นนามธรรมซึ่งเป็นเอกลักษณ์ในหมู่ภาษาต่าง ๆ เหล่านี้

เคล็ดลับการแปลจากแหล่งที่มาไปยังแหล่งที่มา

การแปลโค้ดจากภาษาต่าง ๆ เป็น VHDL มักต้องพิจารณาเรื่องการทำงานพร้อมกันและเวลา ซึ่งเป็นสิ่งที่มีอยู่ในงานออกแบบฮาร์ดแวร์

เครื่องมือที่มีอยู่

มีเครื่องมือการแปลจากแหล่งที่มาไปยังแหล่งที่หลายตัวที่สามารถช่วยในการแปลงโค้ด:

โดยสรุป VHDL ทำหน้าที่เป็นเครื่องมือที่สำคัญในการออกแบบดิจิทัล โดยมีคุณสมบัติที่แข็งแกร่ง ประวัติศาสตร์ที่หลากหลาย และการใช้งานที่หลากหลายในด้านอิเล็กทรอนิกส์และการคอมพิวเตอร์ ความสามารถเฉพาะตัวในการอธิบายฮาร์ดแวร์ทำให้มันแตกต่างจากภาษาการเขียนโปรแกรมที่ใช้กันอย่างแพร่หลายหลายภาษา