基于原理图和HDL的12进制计数器设计Word格式文档下载.docx
《基于原理图和HDL的12进制计数器设计Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《基于原理图和HDL的12进制计数器设计Word格式文档下载.docx(12页珍藏版)》请在冰豆网上搜索。
![基于原理图和HDL的12进制计数器设计Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/11/5fc1945c-0e73-4471-84a2-d44dde556a87/5fc1945c-0e73-4471-84a2-d44dde556a871.gif)
从QuartusII操作流程来看,应先输入底层模块,后输入原理图。
因为先要将底层模块的VHDL代码通过念一生成对应的逻辑符号,才能为顶层原理图所调用。
12进制计数器的QuartusII操作流程可分为以下步骤。
◆建立设计工程;
◆底层模块输入(文本输入);
◆底层模块的变异和符号生成;
◆底层模块仿真;
◆顶层设计的输入(原理图输入);
◆顶层设计的编译;
◆引脚锁定和下载测试。
三、实验原理
采用原理图设计和HDL设计。
该设计方案原理框图如图3原理图和VHDL设计方案所示。
顶层设计采用原理图描述,底层设计采用VHDL语言描述。
12进制计数器包括两个底层模块,一个模块为12进制计数器count12,一个为BCD-7段显示译码器LED7S。
这两个模块均用VHDL语言描述。
根据数字电路所学的知识,画出12进制计数器的逻辑图即可完成设计。
采用原理图设计法时,EDA软件必须能提供所需的底层原件。
对于12进制计数器需要的74192和7447两种元件必须有EAD软件自带原件库提供。
而HDL设计法具有效率高,可移植性好的优点,所以采用混合输入的方法完成设计。
图3原理图和VHDL设计方案
(一)FPGA的基本设计流程
由于12进制计数器采用FPGA实现,因此,需要了解FPGA的基本设计流程。
1.逻辑设计及输入
QuartusII软件对HDL语言和原理图都有很好的支持。
QuartusII软件包含原理图变假期和文本编辑器,操作十分方便。
2.设计综合
像C语言程序在执行之前需要编译工具将C代码翻译成机器语言一样,综合工具需要讲原理图和HDL的设计输入转化成由与、或、非门和触发器等基本逻辑单元组成的逻辑连接。
3.适配与布线
综合后得到的网表与FPGA/CPLD芯片实际配置情况还有较大的差异,适配和布线就是将网表文件适配到具体的FPGA/CPLD芯片中。
4.设计仿真
仿真是指检查综合后的结果是否有原设计一致。
5.下载验证
将生成的配置文件写入芯片进行测试。
(二)7段LED数码管的设计
通过输入信号A[3..0],控制输出信号Y[g..a],以驱动数码管显示,如下表:
表1BCD-7段译码液晶驱动器驱动真值表
LED数码管相应编号
图4LED数码管相应编号
根据真值表及编写相应的VHDL代码,并制作相应的底层元件led7s,实现LED数码管的驱动,根据输入显示相应的数字。
(三)Count2计数模块的设计
为了将计数值在LED数码管上显示,计数气的计数值应该用8421BCD码表示。
图2所示的状态转换图中的每一个状态均可以用8位二进制编码表示,高4位表示十位8421BCD码,低4位表示个位8421BCD码。
由于十位的BCD码中高3位总为0,因此,count12的状态可以用5位编码表示,以简化电路。
图5count2电路模型
四、试验步骤
1.建立工作文件夹和设计工程
在E盘建立一个工程文件夹,路径为E:
\cnt12hdl。
建立设计工程,根据DE2实验板上的FPGA型号选择CycloneII系列的EP2C35G672C8器件型号。
2.底层模块的设计输入
选择新建VHDLFile在VHDL文本编辑窗口中输入count12模块的VHDL程序。
图6count12模块的VHDL程序
将输入的文件保存存放到工作文件夹中,保存类型为VHDLFile(*.vhd),存盘文件名为count12.vhd与VHDL代码中的实体名一致。
3.底层模块的编译和符号创建
将count12.vhd文件置位顶层文件,通过菜单对其进行编译,编译通过后为该模块创建逻辑符号。
符号生成后,可以打开相关的符号文件(*.bsf)。
在输入顶层设计原理图时可以直接调用底层模块逻辑符号。
图7count12模块逻辑符号
4.底层模块的仿真
模块编译通过后,应对其功能和时序进行仿真,以判断是否符合设计要求的逻辑功能。
通过创建VectorWaveformFile文件,打开空白波形编辑器。
通过菜单及按钮的选择,在波型编辑器中输入信号节点。
在“NodesFound”窗口中列出了count12的所有端口引脚。
将q[0]~q[4]的组合q拉到波形编辑器中,并添加cp。
在设置仿真时间,网格宽度后,给输入信号赋值,确保输入时钟信号周期数大于12。
将波形文件存盘count12.vwf。
设置仿真参数,并选中count12.vwf。
选择StartSimulation开始仿真模拟,直到出现“Simulationwassuccessful”。
观察仿真结果,如下图。
说明count12模块功能复合设计要求。
图8count12模块的仿真结果
5.重复上述2~4步骤创建LED7S模块
重复之前步骤,创建底层模块LED7S模块,用以驱动LED数码管,创建过程及结果如下图:
图9LED7S模块逻辑符号
图10LED7S模块仿真结果
6.顶层原理图的输入
打开原理图编辑器,选择BlockDiagram/SchematicFile菜单,打开空白的原理图编辑器。
通过QuartusII软件自带元件库选择相应元件及之前手动创建的元件count12、led7s元件绘制原理图。
通过直接相连或逻辑相连完成原理图创建并对相应的端口引脚进行命名。
保存原理图cnt12.bdf。
图11顶层原理图cnt12
7.顶层原理图的编译
将cnt12.bdf文件置顶后,对其进行编译。
编译的进程包括记错和逻辑综合、适配、装配(生成配置文件)、时序分析等。
编译过程必须排除错有错误,以通过编译。
编译结束后,程序会给出编译小结,如下图:
图12cnt12.bdf编译小结
8.引脚锁定和编程下载
通过选择Assignments->
Pin命令,打开引脚锁定窗口,通过设置“Location”栏,选择对饮端口信号名的器件引脚号。
依次将说有计数器输出锁定到相应的引脚。
表2CNT12引脚锁定表
图12CNT12引脚锁定
将DE2实验板魏永引脚设为“输入高阻”,完成上述工作后,对工程重新编译,以将引脚关系存入设计。
左后通后USB下载电缆将PC机与DE2试验版BLASTER接口连接,合上电源开关。
通过Programmer菜单打开下载和编程窗口。
图13下载和编程窗口
下载结束后,DE2实验板即被写入相应程序,每按一次key0键,试验板上的HEX1、HEX0数码管一次显示01->
02->
…->
12->
01。
图14试验结果显示02
图15试验结果显示05
五、问题与总结
1.问题一
试验过程中,绘制原理图时,为端口输入的名称未与端口绑定,导致模拟仿真时无法得到结果。
修改方案:
将名称与端口绑定重新编译并仿真观察结果。
2.问题二
仿真过程中由于周期或结束时间或输入信号设置不当,导致观察到的结果不完整或错误。
调整仿真时间及信号周期,重新进行仿真,观察结果。
3.问题三
实验过程中,编译无法通过,根据编译错误信息定位到错误位置,发现VHDL文件报错。
解决方案:
核对VHDL代码,发现代码部分输入错误,调整后重新编译。
总结:
通过本次试验,对EDA电子设计自动化有了初步认识,也大致掌握了QuartusII软件的使用。
对VHDL硬件描述语言的学习仍需深入。
通过这种模式进行开发,确实感到效率很高。