- 1、本文档共9页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数电仿真报告 用VHDL语言设计一个六十进制计数器
数电实验设计报告
题目: 用VHDL语言设计一个六十进制计数器
学 院: 电子与信息工程学院
专 业: 10级通信工程(2)班
学 号: xxx
姓 名: xx
指导老师:xxx
2012年6月5号
一、实验目的
1.通过六十进制计数器的设计与仿真,学习VHDL语言及VHDL文本输入设计方法。
2.编写六十进制计数器源程序,应用MAX+PlusII软件进行VHDL文本输入设计与波形仿真。
二、程序流程图
三、 程序代码及注释 library ieee; --打开ieee库 use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all;
entity count60 is --定义实体 port(en,clear,clk:in std_logic; qh:buffer std_logic_vector(3 downto 0);
ql:buffer std_logic_vector(3 downto 0); Cout:out std_logic); --定义各个端口
end count60;
architecture behave of count60 is begin
Cout=1 when(qh=0101 and ql=1001 and en=1)else0;
--计数到59时产生进位信号 process(clk,clear) --有clk及clear变化即触发进程 begin if(clear=0)then --有清零信号即清零 qh=0000;
ql=0000; elsif(clkevent and clk=1)then --有时钟信号时开始计数
if(en=1)then if(ql=9)then ql=0000; --ql到9时清零 if(qh=5)then qh=0000; --qh到5时清零 else qh=qh+1; --未到5时累加1 end if; else
ql=ql+1; --未到9时累加1 end if;
end if;
end if; end process;
end behave;
四、设计过程
步骤1:输入设计项目和存盘
打开 MAX+plusII, 选择菜单“File”_“New…”,出现如图1所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。在出现的“Untitled - Text Editor” 文本编辑窗(图2)中键入VHDL程序(六十进制计数器),输入完毕后,选择菜单“File_Save”,即出现如图2 所示的“Save As”对话框。
步骤2:将设计项目设置成工程文件(PROJECT)
选择菜单“File”_Project_“Set Project to Current File”,当前的设计工程即被指定为cnt60。也可以通过选“File”_“Project”_“Name”,在跳出的“Project Name”窗中指定E:\cnt60file下的cnt60.vhd为当前的工程。
步骤3:选择目标器件并编译
在设定工程文件后,应该选择用于编程的目标芯片:选择菜单“Assign”_“Device…”,在弹出的对话框中的“Device Family”下拉栏中,选择MAX7000,然后在“Devices”列表框中选择芯片型号“AUTO”,按OK。
步骤4:编译源程序
选择“MAX+plusII”下的compiler进行编译。直至显示如下:
步骤5 建立波形文件
步骤6 输入信号节点
步骤7 设置波形参量
五、仿真
在设置好信号之后即可运行仿真,仿真器输出波形图如图4所示,我们可以看到60进制计数在累加达到59之后个位及十位均清零了,同时cout产生了一个进位信号,满足设计要求。
波形图:
将某时间
文档评论(0)