FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
登录
首页-技术文章/快讯-技术分享-正文

VHDL入门实践:从实体结构体到进程的快速上手指南

FPGA小白FPGA小白
技术分享
1天前
0
0
8

Quick Start:5分钟运行第一个VHDL仿真

本指南将带你从零开始,完成一个二输入与门的VHDL代码编写与仿真验证。你将在10分钟内掌握实体(Entity)、结构体(Architecture)和进程(Process)的核心用法。

前置条件

  • 已安装任意一款VHDL仿真工具(推荐ModelSim、GHDL或Vivado Simulator)。
  • 具备基本的文本编辑能力,了解VHDL语法基础(如信号声明、逻辑运算符)。
  • 熟悉操作系统的命令行或图形界面基本操作。

目标与验收标准

  • 目标:编写并仿真一个二输入与门,使用进程实现组合逻辑。
  • 验收标准

    实施步骤

    步骤1:创建工程与工作目录

    打开仿真工具,新建工程并设置工作目录。例如在ModelSim中:File → New → Project,输入工程名(如and_gate_tutorial),指定一个空文件夹作为工作目录。

    步骤2:编写实体(Entity)

    在工程中新建一个VHDL源文件(如and_gate.vhd),输入以下实体描述,定义输入输出端口:

    entity and_gate is
        port (
            a : in  std_logic;
            b : in  std_logic;
            y : out std_logic
        );
    end entity and_gate;

    原因分析:实体是VHDL模块的外部接口,定义了信号方向与类型。std_logic是标准逻辑类型,支持多值逻辑,适合仿真与综合。

    步骤3:编写结构体(Architecture)与进程(Process)

    在同一个文件中添加结构体,内部使用进程实现组合逻辑:

    architecture behavioral of and_gate is
    begin
        process(a, b)
        begin
            if (a = '1' and b = '1') then
                y <= '1';
            else
                y <= '0';
            end if;
        end process;
    end architecture behavioral;

    机制说明:进程的敏感信号列表(a, b)确保任何输入变化时进程重新执行。if语句描述组合逻辑,赋值使用<=信号赋值操作符。注意:组合逻辑中所有输入都应列入敏感列表,否则仿真行为可能不匹配硬件。

    步骤4:编写测试平台(Testbench)

    新建一个测试平台文件(如tb_and_gate.vhd),实例化被测试模块并生成激励:

    entity tb_and_gate is
    end entity tb_and_gate;
    
    architecture sim of tb_and_gate is
        signal a, b, y : std_logic;
    begin
        uut: entity work.and_gate
            port map (a =&gt; a, b =&gt; b, y =&gt; y);
    
        process
        begin
            a &lt;= '0'; b &lt;= '0'; wait for 10 ns;
            a &lt;= '0'; b &lt;= '1'; wait for 10 ns;
            a &lt;= '1'; b &lt;= '0'; wait for 10 ns;
            a &lt;= '1'; b &lt;= '1'; wait for 10 ns;
            wait;
        end process;
    end architecture sim;

    落地路径:测试平台中,uut是被测试的与门实例,process生成所有输入组合,每个组合保持10 ns以便观察。注意wait for语句中时间单位与仿真工具设置一致(默认ns)。

    步骤5:编译与仿真

    在仿真工具中编译所有源文件(通常点击Compile All)。然后启动仿真,将tb_and_gate设为顶层,运行仿真至40 ns。添加波形窗口,观察a、b、y信号。

    验证结果

    仿真波形应显示:

    • 0-10 ns:a=0, b=0 → y=0
    • 10-20 ns:a=0, b=1 → y=0
    • 20-30 ns:a=1, b=0 → y=0
    • 30-40 ns:a=1, b=1 → y=1

    若结果正确,则验证通过。若y始终为0或出现‘X’(未知),检查敏感列表是否完整、端口映射是否匹配。

    排障指南

    • 编译错误:检查实体与结构体名称是否一致,端口方向是否正确。
    • 仿真波形无变化:确认测试平台中wait for语句是否执行,顶层模块是否设置为测试平台。
    • 时间单位警告:在测试平台开头添加library ieee; use ieee.std_logic_1164.all;,并统一所有文件的时间单位(如ns)。

    扩展实践

    尝试将进程改为y <= a and b;的并发赋值形式,观察仿真结果是否一致。进一步可添加复位信号或实现多输入逻辑门。

    参考信息

    • VHDL标准:IEEE 1076-2008
    • ModelSim用户手册:modelsim.com/doc

    附录:完整代码清单

    and_gate.vhd

    entity and_gate is
        port (
            a : in  std_logic;
            b : in  std_logic;
            y : out std_logic
        );
    end entity and_gate;
    
    architecture behavioral of and_gate is
    begin
        process(a, b)
        begin
            if (a = '1' and b = '1') then
                y &lt;= '1';
            else
                y &lt;= '0';
            end if;
        end process;
    end architecture behavioral;

    tb_and_gate.vhd

    entity tb_and_gate is
    end entity tb_and_gate;
    
    architecture sim of tb_and_gate is
        signal a, b, y : std_logic;
    begin
        uut: entity work.and_gate
            port map (a =&gt; a, b =&gt; b, y =&gt; y);
    
        process
        begin
            a &lt;= '0'; b &lt;= '0'; wait for 10 ns;
            a &lt;= '0'; b &lt;= '1'; wait for 10 ns;
            a &lt;= '1'; b &lt;= '0'; wait for 10 ns;
            a &lt;= '1'; b &lt;= '1'; wait for 10 ns;
            wait;
        end process;
    end architecture sim;
    标签:
    本文原创,作者:FPGA小白,其版权均为FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训所有。
    如需转载,请注明出处:https://z.shaonianxue.cn/40710.html
    FPGA小白

    FPGA小白

    初级工程师
    成电国芯®的讲师哦,专业FPGA已有10年。
    36220.98W7.21W34.38W
    分享:
    成电国芯FPGA赛事课即将上线
    2026年FPGA行业趋势深度解读:AI大模型、RISC-V融合与国产替代加速
    2026年FPGA行业趋势深度解读:AI大模型、RISC-V融合与国产替代加速上一篇
    2026年FPGA边缘AI趋势:低功耗优势重估,编程生态仍是关键瓶颈下一篇
    2026年FPGA边缘AI趋势:低功耗优势重估,编程生态仍是关键瓶颈
    相关文章
    总数:944
    FPGA实现千兆以太网MAC控制器:UDP协议栈设计与验证

    FPGA实现千兆以太网MAC控制器:UDP协议栈设计与验证

    本文档提供基于FPGA的千兆以太网MAC控制器与UDP协议栈的完整实现与…
    技术分享
    14天前
    0
    0
    27
    0
    FPGA实现spi协议通信_fpga pll

    FPGA实现spi协议通信_fpga pll

    SPI协议是由摩托罗拉公司提出的通讯协议(SerialPeriphe…
    技术分享
    5个月前
    0
    0
    359
    0
    状态机的Verilog写法

    状态机的Verilog写法

    一、状态机分类1.Moore型:状态机的状态变化仅和当前状态有关…
    工程案例, 技术分享
    1年前
    0
    0
    636
    2
    评论表单游客 您好,欢迎参与讨论。
    加载中…
    评论列表
    总数:0
    FPGA线上课程平台|最全栈的FPGA学习平台|FPGA工程师认证培训
    没有相关内容