VHDL 程序举例
重要说明:不同软件对VHDL语法的支持范围是不一样的,以下程序中的某些语句可能不能运行在所有的软件平台之上,因此程序可能要作一些修改,同时务必注意阅读程序中的注释。以下部分程序为txt格式,请自行另存为vdh后缀的文件。有些EDA软件要求ENTITY的名称和文件名要相同,也请自行修改。 如发现错误请来信指正或在BBS上提出。 组合逻辑: 最高优先级编码器 8位相等比较器 三人表决器(三种不同的描述方式) 加法器描述 8位总线收发器:74245 (注2) 地址译码(for m68008) 多路选择器(使用select语句) LED七段译码 多路选择器(使用if-else语句) 双2-4译码器:74139 多路选择器(使用when-else语句) 二进制到BCD码转换 多路选择器 (使用case语句) 二进制到格雷码转换 双向总线(注2) 汉明纠错吗译码器 三态总线(注2) 汉明纠错吗编码器 解复用器 时序逻辑: 四D触发器:74175 用状态机实现的计数器 简单的锁存器 各种功能的计数器 简单的12位寄存器 通用寄存器 带load、clr等功能的寄存器 带三态输出的8位D寄存器:74374(注2) 移位寄存器:74164 8位数据锁存器 移位寄存器 基本语法 计数器:std_logic_unsigned的用法 条件赋值:使用when else语句 加法器:generate语句的应用 条件赋值:使用列举类型 计数器:generate语句的应用 条件赋值:使用多路选择器 计数器:GENERIC语句的应用 无符号数到整数的转换 计数器:wait语句的应用 元件例化与层次设计 将16进制转化为std_logic 存储器举例:(注3) FIFO 状态机举例: 一个简单的状态机 莫尔型状态机1 使用列举类型的状态机 莫尔型状态机2 带同步复位的状态机 米勒型状态机 使用变量的状态机 带莫尔/米勒输出的状态机 测试向量(Test Bench)和波形产生 加法器源程序 相应加法器的测试向量(test bench) 波形发生器(含test beach) (注1) 经典双进程状态机(含test beach) 8bit采样sine波形发生器 其他设计举例: 伪随机数产生器 一个简单的UART 步进电机控制器 一个游戏程序 直流电机控制器 布斯乘法器 伪随机比特发生器 4位除法器 4位乘法器 分频器的硬件描述语言设计 注1: 含有不可综合语句,请自行修改 注2: 一些PLD只允许I/O口对外三态,不支持内部三态,使用时要注意 注3: 设计RAM的最好方法是利用器件厂家提供的软件自动生成RAM元件,并在VHDL程序中例化
重要说明:不同软件对VHDL语法的支持范围是不一样的,以下程序中的某些语句可能不能运行在所有的软件平台之上,因此程序可能要作一些修改,同时务必注意阅读程序中的注释。以下部分程序为txt格式,请自行另存为vdh后缀的文件。有些EDA软件要求ENTITY的名称和文件名要相同,也请自行修改。 如发现错误请来信指正或在BBS上提出。
组合逻辑:
时序逻辑:
基本语法
存储器举例:(注3)
状态机举例:
测试向量(Test Bench)和波形产生
其他设计举例:
注1: 含有不可综合语句,请自行修改
注2: 一些PLD只允许I/O口对外三态,不支持内部三态,使用时要注意
注3: 设计RAM的最好方法是利用器件厂家提供的软件自动生成RAM元件,并在VHDL程序中例化
返回HDL栏目
copyright© 1999-2003 all rights reserved www.PLD.com.cn