VHDL 程序范例


重要说明:不同软件对VHDL语法的支持范围是不一样的,以下程序中的某些语句可能不能运行在所有的软件平台之上,因此程序可能要作一些修改,同时务必注意阅读程序中的注释。以下部分程序为txt格式,请自行另存为vdh后缀的文件。有些EDA软件要求ENTITY的名称和文件名要相同,也请自行修改。 如发现错误请来信指正或在BBS上提出。

 

组合逻辑:

最高优先级编码器 8位相等比较器
优先编码器 8位大小比较器
8位总线收发器:74245 注2) 地址译码(for m68008)
三人表决器(三种不同的描述方式) LED七段译码 注1)
多路选择器(使用if-else语句) 双2-4译码器:74139
多路选择器(使用when-else语句) 汉明纠错吗编码器
多路选择器(使用select语句) 汉明纠错吗译码器
加法器描述  

 

时序逻辑:

四D触发器:74175 用状态机实现的计数器
简单的锁存器 各种功能的计数器
简单的12位寄存器 模16计数器(使用JK触发器)注1)
带load、clr等功能的寄存器 通用寄存器
移位寄存器:74164 带三态输出的8位D寄存器:74374注2)
   
   
   

 

基本语法

计数器:std_logic_unsigned的用法 条件赋值:使用when else语句
计数器:数据类型转换语句的应用 条件赋值:使用列举类型
计数器:generate语句的应用 条件赋值:使用多路选择器
计数器:GENERIC语句的应用 无符号数到整数的转换
计数器:wait语句的应用 元件例化
加法器:generate语句的应用  
   

 

存储器举例:

通用RAM FIFO
16x8bit RAM  
   

 

状态机举例:

一个简单的状态机 莫尔型状态机1
使用列举类型的状态机 莫尔型状态机2
带同步复位的状态机 米勒型状态机
使用变量的状态机 带莫尔/米勒输出的状态机
   

 

测试向量(Test Bench)举例:

加法器源程序 相应加法器的测试向量(test bench)
波形发生器(含test beach) 经典双进程状态机(含test beach)
   

 

其他设计举例:

伪随机数产生器 一个简单的UART
用ROM实现的波形发生器 一个游戏程序
棋类比赛计时时钟注1) 布斯乘法器
Pelican Crossing控制器 注1) 伪随机比特发生器
直流电机控制器 步进电机控制器
   

 

一个简单的微处理器系统模型

1.简单的8位CPU模型 2.相关的packge
3.RAM 4.ROM 5.微处理器系统完整模型
   

 

注1: 含有不可综合语句,请自行修改

注2: 一些PLD只允许I/O口对外三态,不支持内部三态,使用时要注意