软件:Quartus
语言:VHDL
代码功能:
1.设计一个常用的组合逻辑电路。
2.用VHDL语言设计一个XX进制计数器。要求:异步清零、以8421BCD码形式输出。
3.设计一个有限状态机。
FPGA代码Verilog/VHDL代码资源下载:www.hdlcode.com
演示视频:
设计文档:
VHDL组成
library(程序库) package(程序包) entity(实体)architecture(构造体)configuration(配置)
信号与变量的区别
一 信号与变量的区别
1、声明形式与赋值符号不同
变量声明使用variable,赋值符号位:=
而信号声明用signal,复制符号为<=
2、有效域不同
信号的声明在结构体内部,进程、子程序及函数外部声明,而变量只能在进程,函数体,子程序内部进行声明。换句话说,信号的有效作用域为整个结构体,而变量只能在进程,函数体,子程序内部起作用,他们不能为多个进程所共用。
3、赋值操作及数据带入时刻不同
在进程中,信号赋值在进程结束时起作用(即整个进程执行到最后一条语句时进程接下来挂起时,数据才发生带入),而变量赋值是立即起作用的。如果在一个进程中多次为一个信号赋值时,只由最后一个值会起作用;而当为变量赋值时,变量值的改变是立即发生的。即变量将保持着当前值,直到被赋予新的值。
顺序语句只存在于进程和子程序内部。
4、使用
在实际应用中,信号的行为更接近硬件电路的实际情况,因此应该更多地使用信号进行电路内部的数据传递,只有在描述一些用信号很难描述的算法时,才用到变量。(也有人建议在同一进程内部传递的数据用变量,而在进程
间传递的数据建议用信号)但在以下几种情况只能使用变量:
(1)loop语句中,若在一个循环体内需要多次对某一个数据操作,则必须用变量,因为对信号赋值进行多次赋值只在最后一次才会有效。
(2)数组的索引(index)只能用变量。如果使用信号则编译会报错。
1. 信号(signal)
信号是逻辑电路中的连接线,可以用于元件间和元件内部电路各单元间的连接。
信号使用”<=“符号赋值。
在顺序描述语句中,信号的赋值不是即时更新的。只有在相应的进程、函数或过程完成之后,信号的值才会进行更新。
2. 变量(variable)
变量只用于局部电路的描述,只能在process、function和procedure内部使用。
变量使用”:=“符号赋值。
变量的赋值是立即生效的,可以在下一行代码中立即使用新的变量值。
3. 信号与变量赋值的生效时刻
信号与变量的一个重要差异是赋值是否立即生效。对变量的赋值是立即生效的,而在顺序描叙语句中对信号的赋值则不会立即生效,只有当信号所在的process内的操作全部完成一遍后,信号的值才会更新。
1. 工程文件
2. 程序文件
3. 程序编译
4. 仿真图
55进制计数器
1. 工程文件
2. 程序文件
3. 程序编译
4. 仿真图
状态机
1. 工程文件
2. 程序文件
3. 程序编译
4. 仿真图
部分代码展示:
LIBRARY?ieee; ???USE?ieee.std_logic_1164.all; --D触发器逻辑电路 ENTITY?D_FF?IS ???PORT?( ??????D????:?IN?STD_LOGIC; ??????CP???:?IN?STD_LOGIC; ??????Q????:?OUT?STD_LOGIC; ??????Q_n??:?OUT?STD_LOGIC ???); END?D_FF; ARCHITECTURE?behave?OF?D_FF?IS ??? ???SIGNAL?S_d???:?STD_LOGIC; ???SIGNAL?R_d???:?STD_LOGIC; ???SIGNAL?Q_d???:?STD_LOGIC; ???SIGNAL?Q_n_d?:?STD_LOGIC; BEGIN
点击链接获取代码文件:http://www.hdlcode.com/index.php?m=home&c=View&a=index&aid=1367