实验二 模可变计数器DOC.docx
- 文档编号:440221
- 上传时间:2022-10-10
- 格式:DOCX
- 页数:20
- 大小:479.95KB
实验二 模可变计数器DOC.docx
《实验二 模可变计数器DOC.docx》由会员分享,可在线阅读,更多相关《实验二 模可变计数器DOC.docx(20页珍藏版)》请在冰豆网上搜索。
实验二模可变计数器DOC
南昌大学实验报告
学生姓名:
学号:
专业班级:
中兴101班
实验类型:
□验证□综合■设计□创新实验日期:
2012、10、18成绩:
实验二模可变计数器的设计
一、实验目的
1.学习计数器的VHDL设计、波形仿真和硬件测试;
2.学会自己设计程序;
3.学会设计模可变计数器;
4.学习多层次设计方法。
二、实验内容与要求
1.计设置一位控制模的位M,要求M=0:
模23计数;当M=1:
模109计数。
2.计数结果用静态数码管显示,一个四位二进制表示0~9中的一个数;
3.给出此项设计的仿真波形;
4.应用实验装置验证此计数器的功能。
三、实验思路
1.按照实验要求,本实验可分为四个模块进程:
分频、模23与109计数转换、数码管控制、七段译码。
2.模可变计数器原理:
即在原有的模值计数器上加入模值转换功能
3.计数器的数码管显示
需注意十位和百位的进位即:
当个位数的数值为9的下一个脉冲来时转换为,同时向十位进一,转换的算法为:
9(1001)+7(0111)=0(0000),并进一位;
当数值为99时,用同样的方法转换:
153(10011001B,数码管显示99)+103(01100111B)=100(000100000000);
4.要求分别实现模23和模109的计数,因此我分别用buffer变量GW、SW、BW代表个位、十位、百位。
还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位计数;当M为1时实现模109计数,用GW、SW、BW分别为个位十位和百位计数。
由于端口不能参与运算,因些在结构体中定义了se10、sel1、sel2三个buffer变量,分别用来对应SEL(0)、SEL
(1)、SEL
(2);在程序的最后用端口接收信号。
5.进程敏感信号为RSTENM三个,当RST为低电平,EN为高电平时则计数,否则不计数。
6.位选信号的设置:
用整形变量CNT8分别使不同的位选信号对应不同的输入,而得到不同输出。
对应关系:
表一位选信号
Sel2sel1sel0
000
001
010
011
D
Q7
Q6
Q5
Q4
sel2sel1sel0
100
101
110
111
D
Q3
Q2
Q1
Q0
7.模23与模109计数转换思路框图:
图一思维框图
四.实现方法一:
原理图输入法设计(自己独立完成)
1.建立文件夹
建立自己的文件夹(目录),如c:
\myeda,进入Windows操作系统
●QuartusII不能识别中文,文件及文件夹名不能用中文。
2.原理图设计输入
打开QuartusII,选菜单File→New,选择“DeviceDesignFile->BlockDiagram->SchematicFile”项。
点击“OK”,在主界面中将打开“BlockEditor”窗口。
(1)分频器模块:
(实体名为CLKDIV)
--时间:
2012年9月28号
--版本:
7.0
--功能:
分频器(100分频)
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_ARITH.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYCLKDIVIS—定义实体名为CLKDIV
PORT(CLK:
INSTD_LOGIC;--输入信号为自带时钟
CLK_DIV:
OUTSTD_LOGIC);--输出信号为分频后的时钟信号
ENDCLKDIV;
ARCHITECTURERT1OFCLKDIVIS
SIGNALDATA:
INTEGERRANGE0TO100;--实现100分频
SIGNALCLK_TEMP:
STD_LOGIC;
BEGIN
PROCESS(CLK)
BEGIN
IFRISING_EDGE(CLK)THEN
IF(DATA=100)THEN
DATA<=0;
CLK_TEMP<=NOTCLK_TEMP;
ELSE
DATA<=DATA+1;
ENDIF;
ENDIF;
CLK_DIV<=CLK_TEMP;
ENDPROCESS;
ENDRT1;
(2)计数模块:
(实体名为COUNT)
--时间:
2012年9月28号
--版本:
7.0
--功能:
模可变计数器
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYcountIS
PORT(CLK,RST,EN,M:
INSTD_LOGIC;--输入变量为CLK、复位信号:
RST、使能端信号:
EN、--以及模变转换信号:
M
CQ1,CQ2,CQ3:
OUTSTD_LOGIC_VECTOR(3DOWNTO0);--输出信号为计数的个、十、百位
COUT:
OUTSTD_LOGIC);--count为进位位
ENDENTITYcount;
ARCHITECTUREoneOFcountIS
SIGNALmodel:
INTEGER;
BEGIN
PROCESS(CLK,RST,EN,M,model)
VARIABLECQI:
STD_LOGIC_VECTOR(11DOWNTO0);
BEGIN
IFM='0'THENmodel<=34;
ELSIFM='1'THENmodel<=264;
ELSEmodel<=0;
ENDIF;
IFRST='1'THENCQI:
=(OTHERS=>'0');
ELSIFCLK'EVENTANDCLK='1'THEN
IFEN='1'THEN
IFCQI IFCQI(7DOWNTO0)=153THENCQI: =CQI+103; ELSIFCQI(3DOWNTO0)=9THENCQI: =CQI+7; ELSECQI: =CQI+1; ENDIF; ELSECQI: =(OTHERS=>'0'); ENDIF; ENDIF; ENDIF; IFCQI=modelTHENCOUT<='1'; ELSECOUT<='0'; ENDIF; CQ1<=CQI(3DOWNTO0); CQ2<=CQI(7DOWNTO4); CQ3<=CQI(11DOWNTO8); ENDPROCESS; ENDARCHITECTUREone; (3)数码管显示模块: (实体名为scan_led) --时间: 2012年9月28号 --版本: 7.0 --功能: 数码管显示 LIBRARYIEEE; USEIEEE.STD_LOGIC_1164.ALL; USEIEEE.STD_LOGIC_UNSIGNED.ALL; ENTITYscan_ledIS PORT(clk: INSTD_LOGIC; data1,data2,data3 : INSTD_LOGIC_VECTOR(3DOWNTO0); scan: OUTSTD_LOGIC_VECTOR(6DOWNTO0);--输出数码管的7位显示 choose: OUTSTD_LOGIC_VECTOR(2DOWNTO0));--数码管位选信号 ENDENTITY; ARCHITECTUREoneOFscan_ledIS SIGNALcout8: STD_LOGIC_VECTOR(2DOWNTO0); SIGNALA: STD_LOGIC_VECTOR(3DOWNTO0); BEGIN P1: PROCESS(cout8)—数码管动态扫描 BEGIN CASEcout8IS WHEN"000"=>choose<="000";A<="0000"; WHEN"001"=>choose<="001";A<="0000"; WHEN"010"=>choose<="010";A<="0000"; WHEN"011"=>choose<="011";A<="0000"; WHEN"100"=>choose<="100";A<="0000"; WHEN"101"=>choose<="101";A<=data3; WHEN"110"=>choose<="110";A<=data2; WHEN"111"=>choose<="111";A<=data1; WHENOTHERS=>NULL; ENDCASE; ENDPROCESSP1; P2: PROCESS(clk) BEGIN IFclk'EVENTANDclk='1'THENcout8<=cout8+1; ENDIF; ENDPROCESSP2; P3: PROCESS(A)—数码管译码 BEGIN CASEAIS WHEN"0000"=>scan<="0111111";--0 WHEN"0001"=>scan<="0000110";--1 WHEN"0010"=>scan<="1011011";--2 WHEN"0011"=>scan<="1001111";--3 WHEN"0100"=>scan<="1100110";--4 WHEN"0101"=>scan<="1101101";--5 WHEN"0110"=>scan<="1111101";--6 WHEN"0111"=>scan<="0000111";--7 WHEN"1000"=>scan<="1111111";--8 WHEN"1001"=>scan<="1101111";--9 WHEN"1010"=>scan<="1110111";--A WHEN"1011"=>scan<="1111100";--B WHEN"1100"=>scan<="0111001";--C WHEN"1101"=>scan<="1011110";--D WHEN"1110"=>scan<="1111001";--E WHEN"1111"=>scan<="1110001";--F WHENOTHERS=>NULL; ENDCASE; ENDPROCESSP3; END; 2.包装元件入库。 编译通过后,单击File→CreateDefaultSymbol,当前文件变成了一个包装好的自己的单一元件(分频器: CLKDIV;计数器: COUNT;译码器: scan_led),并被放置在工程路径指定的目录中以备后用。 3.保存各个模块的原理图 单击File→Saveas…按扭,出
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验二 模可变计数器DOC 实验 可变 计数器 DOC
![提示](https://static.bdocx.com/images/bang_tan.gif)