EDA模可变计数器设计

EDA模可变计数器设计
EDA模可变计数器设计

南昌大学实验报告

学生姓名:邱永洪学号:6100210026专业班级:中兴101班

实验类型:□验证□综合■设计□创新实验日期:2012.10. 19 实验二模可变计数器的设计

一、实验目的

1、学习设计脉冲分频程序的设计,掌握分频的作用。

2、学会利用控制位M来控制计数器的模值。

二、实验内容与要求

1、计设置一位控制模的位M,要求M=0,模23计数;当M=1,模109计数;

2、计数结果用三位数码管显示,显示BCD码;

3、利用Quartus软件实现波形仿真;

4、应用实验箱验证此计数器的功能。

三、实验思路

1、要求分别实现模23和模109的计数,因些我分别用GW、SW、BW 代表个位,十位

和百位。还有一个控制模的位M,当M为0时实现模23计数,只用到GW和SW分别为个位和十位;当M为1时实现模109计数,用GW、SW、BW 分别为个位,十位和百位计数。

2、由于要求用三个数码管显示,由于每次只能只能选中一个数码管显示管,因此我使

用了数码管的动态扫描来实现视觉上多个数码管显示管同时显示的效果,这个步骤中分频计的作用很重要。我使用了一个可变的R作为分频计的初值。

3、计数时分两种情况

1)、当M为0时,实现模23计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;计数到22时当下一个时钟上升沿到来时就清0重计。

2)、当M为1时,实现模109计数,当个位为9则向十位进位,并个位清0,当个位小于9,则个位自身加1;当个位和十位均为9时,就向百位进位,同时个位和十位自身清0;计数到108时当下一个时钟上升沿到来时就清0重计。

四、实验程序

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

ENTITY count IS

PORT(CLK,M,EN,RST:IN STD_LOGIC;

R:IN STD_LOGIC_VECTOR(7 DOWNTO 0); ---分频计数初值

sel0,sel1,sel2:buffer STD_LOGIC;

SG:OUT STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管八段

CLK1:buffer STD_LOGIC;

GW,SW,BW: buffer STD_LOGIC_VECTOR(3 DOWNTO 0);--计数器的个,十,百位 COUT:OUT STD_LOGIC;--溢出信号

SEL:OUT STD_LOGIC_VECTOR(7 DOWNTO 0) --位选信号

);

END count;

ARCHITECTURE behav OF count IS

SIGNAL CNT,X : STD_LOGIC_VECTOR(7 DOWNTO 0); --数码管分频计数

SIGNAL J : STD_LOGIC_VECTOR(11 DOWNTO 0); --12位BCD计数值

SIGNAL CNT8: STD_LOGIC_VECTOR(2 DOWNTO 0); --数码管选择

SIGNAL A : STD_LOGIC_VECTOR(3 DOWNTO 0); --数码管显示值

SIGNAL MODEL : STD_LOGIC_VECTOR(11 DOWNTO 0); --模长信号

BEGIN

P1:PROCESS(CLK,R) --进程P1分出的频率用来数码管的位

BEGIN

X<=R;

IF CLK'EVENT AND CLK = '1' THEN CNT<=CNT+1;

IF CNT=X-1 THEN CLK1<='1';CNT<="00000000";--R分频:R是一个八位的二进制数

ELSE CLK1<='0';

END IF;

END IF;

END PROCESS;

P2:PROCESS(EN,RST,M,CLK1) --计数

BEGIN

CASE M IS

WHEN '0'=>MODEL<="000000100010";--23

WHEN '1'=>MODEL<="000100001000";--109

END CASE;

GW<=J(3 downto 0);

SW<=J(7 downto 4);

BW<=J(11 downto 8);

IF RST='1' THEN J<=(others=>'0');

ELSIF CLK1'EVENT AND CLK1='1' THEN

IF EN='1' THEN

IF J

IF GW=9 THEN --个位为9时加7调整

J<=J+7;

IF SW=9 THEN --十位为9时加103调整

J<=J+103;

END IF;

ELSE J<=J+1;

END IF;

ELSE J<=(others=>'0');

END IF;

END IF;

END IF;

END PROCESS;

P3:PROCESS( CLK) --数码管控制

BEGIN

IF CLK'EVENT AND CLK='1' THEN

IF CNT8<"010" THEN CNT8 <=CNT8+1;

ELSE CNT8<=(OTHERS=>'0');

END IF;

END IF;

SEL(0)<=sel0 ;

SEL(1)<=sel1 ;

SEL(2)<=sel2 ;

CASE CNT8 IS --个、十、百分别送数码管动态显示

WHEN "000" => sel2<='0';sel1<='1';sel0<='0';A<=GW; WHEN "001" => sel2<='0';sel1<='0';sel0<='1';A<=SW;

WHEN "010" => sel2<='0';sel1<='0';sel0<='0';A<=BW;

WHEN OTHERS =>NULL;

END CASE;

END PROCESS ;

P4:PROCESS(A) --七段译码程序

BEGIN

CASE A IS

WHEN "0000" =>SG<="00111111"; WHEN "0001" =>SG<="00000110"; WHEN "0010" =>SG<="01011011"; WHEN "0011" =>SG<="01001111"; WHEN "0100" =>SG<="01100110"; WHEN "0101" =>SG<="01101101"; WHEN "0110" =>SG<="01111101"; WHEN "0111" =>SG<="00000111"; WHEN "1000" =>SG<="01111111"; WHEN "1001" =>SG<="01101111"; WHEN OTHERS=>NULL;

END CASE;

END PROCESS;

COUT <='1' WHEN J =MODEL ELSE '0';

END behav;

五、仿真波形的建立与分析

1)、仿真波形的建立如下

2)、仿真结果如下图所示

仿真结果图

下面分各种情况一一对其分析

1)、EN、REST键的功能检验,COUNT键的进位溢出脉冲:

REST脉冲使各

位清零

2)当M=0时,实现模23计数功能:

计数满22产生

进位脉冲

计数满22个位,

十位清零

3)当M=1时,实现模109计数功能:

六、引脚锁定

在这里我设置了八个用户开关K0-K7用来设置初值R ,三个用户按键S1、S2、S3,其中S1控制EN,S2控制M ,S3控制REST 。

1.Assignments-.>device->

引脚锁定,参照下载实验板1K100的引脚号说明书,选择适当的引脚

2.引脚锁定后,保存,必须重新进行一次全程编译,编译通过后才能编程下载。 3、编程下载,用下载线将计算机并口和试验箱上的JTAG 口接起来,接通电源。 选择Tools —>Programmer 菜单,打开programmer 窗口。 在mode 中选中JTAG ,将Program/Configure 下的笑方框选中

4在开始编程之前,必须正确设置编程硬件。点击“Hardware Setup ”按钮,打开硬件设置口。

点击“Add Hardware ”打开硬件添加窗口,在“Hardware type ”下拉框中选择“ByteBlasterMV or ByteBlaster II ”,“Port ”下拉框中选择“LPT1”,点击OK 按钮确认,关闭Hardware Setup 窗口,完成硬件设置。

计数满108个位,十位,百位清零。

5、点击“Start ”按钮,开始编程下载

图(14)下载成功

七、硬件测试结果

下载成功后,开始在实验箱上检验结果,我设置的CLK=1KHz (1)clk 为时钟信号,由时钟信号的上升沿触发计数 (2)m 为模值输入端,当其变化时,计数容量相应发生变化;

(3)rest 为清零控制端,当其为高电平时清零;

(4)en 为使能控制端,当其为高电平时正常计数,当其为低电平时暂停计数;

(5)、当按下S3时,使M=0数码管计数到22后开始清0,实现了模23计数;再次按下S3,M 为1时,数码管计数到108后,开始清0,实现了模109计数。而且当数码管计数到45,我把电平2置为低电平,即M 为0时,个位,十位都清0,转向模22计数。 因此实验硬件测试结果与程序要实现的功能相符合。 (6)、通过八个电平开关K0-K7设置R 的初值为R=250;

当按下用户按键S3时,使REST 产生一个脉冲,实现清零,在数码管上看到全显示0; 实验成功。

八、试验心得

(1)、在建立波形文件时,END TIME 设置非常重要,一开始没有设置好,在仿真波形图上看不到个位、十位和百位的计数情况,本实验END TIME=1ms ,波形仿真中模23中,CLK 为周期100s μ;形仿真中模109中,CLK 为周期10s μ。

硬件测试时,当CLK 脉冲很低时,可以看到动态扫描数码管的扫描情况,八个数码管依次显示。

(2)数码管动态显示时,要注意选通位的设置。

九、参考资料

《EDA 技术实用教程》 潘松 黄继业 《EDA 实验指导书》 丁杰 朱启标

东南大学可变步长计数器

东南大学电工电子实验中心 实验报告 课程名称:电路与电子线路实验I 第 3 次实验 实验名称:可变步长计数器的设计 院(系):吴健雄专业:信息 姓名:学号: 实验室: 502 实验组别: 6 同组人员:实验时间:年月日评定成绩:审阅教师:

一、实验内容要求 1.可变步长计数器的设计 内容: ● 实现N 步长计数器 ● 实现1/N 步长计数器 ● N 为四位二进制数,可现场设置 要求: ● 在Multisim 软件平台上设计实验电路 ● 运行并检验实验结果 二、 实现方案 整个实验的实现方案的框架如图: 在此基本呢框架上添加量程设置,加减,N 与1/N 步长的具体方案。 三、 电路设计 首先,将电路分为两个模块搭建,分别为可变量程可逆计数的功能模块与可变步长的模块。 可逆功能可以通过用74LS160再加非门实现,也可直接用74LS190或74LS192(可加减十进制计数器)来实现。本实验将利用74LS190来实现,并通过逻辑门对计数器进行置数与清零的控制,74LS190引脚图如下图所示:

可变量程功能可以通过利用计数器输出数通过逻辑门的判断将结果输入到置数端,与到达最大值时传送信息到到清零端。 可变步长功能可以用74LS283(全加器)与D触发器控制开关来实现,74LS283引脚图如下所示: 四、电路分析仿真 可变量程加减计数模块

N步长计数器 以上模拟电路可以通过控制不同开关,改变步长,步长可以由1-15变化,当计数为16时灯灭。 五、实验总结 1、本实验让我进一步了解了74LS190计数器的基本原理。基本掌握集成计数器芯片74LS190工作原理及应用。 2、在设计可变量程功能时最开始找不到方法。经过自己的努力和尝试,渐 渐地思路清晰起来,经过多次尝试,实现了设计的要求。

模可变计数器设计(Verilog语言)概览

模可变计数器设计 (一)实验目的 1、进一步熟悉实验装置和QuartusⅡ软件的使用; 2、进一步熟悉和掌握EDA设计流程; 3、学习简单组合、时序电路的EDA设计; 4、学习计数器中二进制码到BCD码的转换技巧; 5、学习实验装置上数码管的输出方法。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下: 1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定)的 数,没按下时模为100-199之间(具体数值自行确定)的数; 2、计数结果用三位数码管十进制显示。 (三)主要仪器设备 3、微机1台 4、QuartusII集成开发软件1套 5、EDA实验装置1套 (四)实验步骤 主要有三个模块 1:一个模20和模119的计数器 2:数码管的显示 3:BCD的调整 源程序: module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model;

reg [7:0] cnt,SG; reg [2:0] sel; reg [0:0]d; output [0:0]d; always @(posedge clk) begin cnt=cnt+1; if (cnt==200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; //200分频,CLK为数码管扫描频率,CLK1为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel为数码管选择 always @(sel) begin case (sel) 0: a=bw; //0数码管为百位 1: a=sw; //1数码管为十位 2: a=gw; //2数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8段译码值 default: SG=8'b11111111; endcase end always @(m) if (m) model=12'b000000100000; //模值20 else model=12'b000100011001; //模值119 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8]; always @(posedge clk1,negedge rst) begin if (!rst) q=0; else if (en) begin if (q

计数进制可变的计数器设计

数字电子技术基础自主实验 班级:1201106 学号:1120110618 姓名: 陈振鑫

姓名班级学号 实验日期节次教师签字成绩 实验名称:计数进制可变的计数器设计 一、实验目的 利用74LS138(3线-8线译码器),74LS253(4选1数据选择器),74LS161(同步十进制加法计数器)三个芯片组合,利用清零法组成模数可以改变的加法计数器。 二、实验设备名称,型号 1.实验电路箱 2.直流稳压电源 3.74LS138、74LS253 、74LS161等芯片 4.导线若干 5.数字万用表 74ls138 74ls161

74ls253 三、实验电路图 四、设计思路及方案 设计思路:将计数器的输出作为译码器的输入端,译码数通过数据选择器,输出低点平,利用同步十进制加法计数器74LS161的清零端将计数器清零。 设计方案:电路图如图上图所示,74LS161计数器输出端QdQcQbQa分别与74LS138的输入端B0B1B2和输入使能端E2(高电平有效)相连,译码器的输出端Y0Y1Y6Y7与四选一数据

选择器输入端相连,输出端与计数器清零端相连。当E3=1,B2B1B0从000到111变化时Y1~Y7分别被选中,当MN分别取00~11时,便可实现改变计数器当进制。 五、实验步骤 1.检查导线通断后按电路图连好电路,QdQcQbQa端接数码显示管,CP端接手动计数脉冲,MN端设为00,检查无误后接通电源; 2.接通电源连续发动计数脉冲至CP端,观察数码显示,使计数器进入主计数循环; 3.按表测量并记录数据; 4.分别设MN=01,10,11,重复上述步骤; 5.分析实验结果。 六、仿真结果

模可变计数器设计Verilog语言

模可变计数器设计 V e r i l o g语言 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

模可变计数器设计 (一)实验目的 1、进一步熟悉实验装置和QuartusⅡ软件的使用; 2、进一步熟悉和掌握EDA设计流程; 3、学习简单组合、时序电路的EDA设计; 4、学习计数器中二进制码到BCD码的转换技巧; 5、学习实验装置上数码管的输出方法。 (二)设计要求 完成设计、仿真、调试、下载、硬件测试等环节,在EDA实验装置上实现模可变计数器功能,具体要求如下: 1、设置一个按键控制改变模值,按键按下时模为10-99之间(具体数值自行确定) 的数,没按下时模为100-199之间(具体数值自行确定)的数; 2、计数结果用三位数码管十进制显示。 (三)主要仪器设备 3、微机1台 4、QuartusII集成开发软件 1套 5、EDA实验装置1套 (四)实验步骤 主要有三个模块 1:一个模20和模119的计数器

2:数码管的显示 3:BCD的调整 源程序: module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model; reg [7:0] cnt,SG; reg [2:0] sel; reg [0:0]d; output [0:0]d; always @(posedge clk) begin cnt=cnt+1; if (cnt==200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; //200分频,CLK为数码管扫描频率,CLK1为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel为数码管选择 always @(sel) begin case (sel) 0: a=bw; //0数码管为百位 1: a=sw; //1数码管为十位 2: a=gw; //2数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8段译码值 endcase end always @(m) if (m) model=12'b000000100000; //模值20 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8];

定时计数器设计.

设计数字钟,内有4组可设置的定时开/关,控制一路开关量输出。定时开关的设置分为单次操作(2011年6月25日8:00开2011年6月26日18:00关),周期操作(如周三8:00 开,周四16:00关)。数码管显示时间(单位秒)与设置值(单位分钟),用发光二极管表示周期与单次操作。 任务安排: (1)设计任务及要求分析 (2)方案比较及认证说明 (3)系统原理阐述,写出设计方案结构图。 (4)软件设计课题需要说明:软件思想,流程图,源程序及程序注释 (5)调试记录及结果分析、 (6)总结 (7)参考资料5篇以上 (8)附录:程序清单 时间安排: 6月24日:安排设计任务;收集资料;方案选择 6月25日:程序设计 6月26——27日:实验室内调试程序并演示 6月28日:撰写报告 7月1日:交能力拓展训练报告

摘要 单片机在电子产品中的应用越来越广泛,特别是51系列的单片机,由于其使用方便、价格低廉等优势,在市场上占有很大的份额。AT89C51就是51系列中的一个比较成熟的型号,它完全兼容51单片机的指令。 本文详细介绍了基于AT89C51单片机的数字电子钟的设计,本电子钟可以实现日期、时间的显示和调整,带有整点提示和一个闹钟,并且可以显示当前气温。 本设计包括硬件设计和软件设计两部分。主要硬件有:三端稳压器LM7805、AT89C51单片机、字符型液晶显示模块HY1602A和若干按键等。软件大致思路为:使用12MHz的晶振,单片机内部的定时器0工作在方式1,每计数50000个机器周期(即50ms)产生一次中断,中断20次就是一秒,这样就可以实现精确计时的目的,不断扫描按键,如果有按键按下,则对按键做出相应的响应。 关键字:单片机;电子钟; LCD1602;

变模计数器

数字电路课程设计报告 ——变模计数器 课程设计任务书 一﹑题目:16进制计数器, 计数器的计数模值可变,计数模M从2~16变化,用多路开关控制M的选择。 原始条件:该系统由计数模值设置开关电路、变模控制模块、16进制计数器、显示驱动电路构成。 二、要求完成设计的主要任务如下:(变模计数器输出状态表如表2-1所示。 电路设计框图如图2-1所示。)

图2-1变模计数器设计框图 一、实验目的 1、设计变模计数器,掌握变模计数器的设计方法,实现二~十六进 制之间的转换。 2、掌握中规模集成计数器74LS85的逻辑功能和使用方法 3、计数器的计数模M值可变,多路开关控制M的选择

二、设计理念 变模开关控制电路: 设置三个开关来控制切换A、B、C三个输入端,就可以实现001到111的进制实现功能。 变模控制电路: 计数器四位输出送4-16译码器,译码器输出接16选1数据选择器,数 据选择器控制端接模设置开关电路(拨码开关)。 显示驱动电路: 计数器输出送显示译码器,再送4段LED显示器。 三、实验原理 通过161计数器计数输出送给4-16译码器,再送给选择器,最后显示驱动。通过计数器的计数模值可变,计数模M从2~16变化,用多路控 制M的选择。 根据变模计数器的引脚图,电路图(如下图所示)。进行变模计数器的设计。 四、实验设备 74LS85 一个 74LS161 一个 74LS00 一个 导线若干 面包板一个

电路板一个 电源线一个 五、实验内容 (1)电路图: 手绘电路图(2)各芯片的引脚图

74LS00引脚图 74LS85引脚图

实验九_步长可变的加减计数器

实验九步长可变的加减计数器 一、实验目的 1.掌握加减法计数器以及特殊功能计数器的的设计原理。 2用VHDL语言设计多功能计数器。 二、实验原理 计数分同步计数器和异步计数器,如果按工作原理和使用情况来分那就更多了。 1.加减工作原理 加减计数也称为可逆计数,就是根据计数控制信号的不同,在时钟脉冲的作用下,计数器可以进行加1计数操作或者减1计数操作。 2.变步长工作原理 如步长为3的加法计数器,计数状态变化为0、3、6、9、12……,步长值由输入端控制。在加法计数时,当计数值达到或超过99时,在计数器下一个时钟脉冲过后,计数器清零;在减法计数时,当计数值达到或小于0时,在计数器下一个时钟脉冲过后,计数器也清零。 三、实验内容 1 设计的计数步长可在0~79之间变化 2 通过仿真或观察波形图验证设计的正确性。 3 编译下载验证结果。 四、设计提示 1.注意IF语句的嵌套。 2.注意加减计数状态的变化,计数值由9变0(加法)及由0变9(减法)各位的变化。 由于计数器为十进制计数器,还应考虑进位或借位后进行加6及减6校正。 五、实验报告要求

1.写出多模加减计数器的VHDL源程序。 2.叙述多模加减计数器的工作原理。 SF = ‘1’加标志,SF=’0’减标志 3.画出计数器工作波形图. LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CHANGABLE IS PORT(CLK,RESET,SF:IN STD_LOGIC; SIZE:IN STD_LOGIC_VECTOR(6 DOWNTO 0); DO:OUT STD_LOGIC_VECTOR(6 DOWNTO 0) ); END ENTITY CHANGABLE; ARCHITECTURE C_SIZE OF CHANGABLE IS SIGNAL C_COUNT: STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN PROCESS(CLK,RESET,SF,SIZE) V ARIABLE TP:STD_LOGIC_VECTOR(6 DOWNTO 0); BEGIN IF(RESET = '1')THEN C_COUNT<=(OTHERS=>'0'); ELSIF(CLK'EVENT AND CLK = '1')THEN IF(SF='1')THEN TP:=C_COUNT+SIZE; IF(TP>79)THEN C_COUNT<=(OTHERS=>'0'); ELSE C_COUNT<=C_COUNT+SIZE; END IF; ELSE IF(TP < SIZE)THEN C_COUNT<=(OTHERS=>'0'); ELSE C_COUNT<=C_COUNT-SIZE; END IF; END IF; END IF; DO<=C_COUNT; END PROCESS; END ARCHITECTURE C_SIZE;

一种多功能计数器的设计

一种多功能计数器的设计 摘要:计数器在我们的日常生活中用得非常普遍,在计算机和数字化设备中更是无处不在。自动化生产流水线上对产品的计数更为重要,但一般计数器专用性强,一种计数器只能对某一种材料或特性的产品进行计数,在一定程度上限制了它的计数对象。鉴于此,本设计制作一个能对不同材料的产品进行计数的多功能计数器,扩大一般计数器的应用范围。 关键词:产品;传感器;计数器 abstract:counter is widely used in our life, especially in computer and digital equipment. but with the problem of material and property of products on pipelining, it is restricted badly on this tache. one counter may barely count the products of same material, though broad usage, its simplex function at a certain extent restrict its using in depth. considering the disadvantage of counter, the objective of this design is definite, that is we can make a multifunctional counter, which enlarge its scope of application. key words: product; sensor; counter 1 引言 计数器在生产实践中的广泛应用大家有目共睹,计数器是数字化设备的基石,少了计数器,大大影响其功能。但就计数器本身而言,

实验六verilog设计分频器计数器电路答案

实验六 Verilog设计分频器/计数器电路 一、实验目的 1、进一步掌握最基本时序电路的实现方法; 2、学习分频器/计数器时序电路程序的编写方法; 3、进一步学习同步和异步时序电路程序的编写方法。 二、实验内容 1、用Verilog设计一个10分频的分频器,要求输入为clock(上升沿有效),reset (低电平复位),输出clockout为4个clock周期的低电平,4个clock周期的高电平),文件命名为。 2、用Verilog设计一异步清零的十进制加法计数器,要求输入为时钟端CLK(上升沿)和异步清除端CLR(高电平复位),输出为进位端C和4位计数输出端Q,文件命名为。 3、用Verilog设计8位同步二进制加减法计数器,输入为时钟端CLK(上升沿有效)和异步清除端CLR(低电平有效),加减控制端UPDOWN,当UPDOWN为1时执行加法计数,为0时执行减法计数;输出为进位端C和8位计数输出端Q,文件命名为。 4、用VERILOG设计一可变模数计数器,设计要求:令输入信号M1和M0控制计数模,当M1M0=00时为模18加法计数器;M1M0=01时为模4加法计数器;当M1M0=10时为模12加法计数器;M1M0=11时为模6加法计数器,输入clk上升沿有效,文件命名为。 5、VerilogHDL设计有时钟时能的两位十进制计数器,有时钟使能的两位十进制计数器的元件符号如图所示,CLK是时钟输入端,上升沿有效;ENA是时钟使能控制输入端,高电平有效,当ENA=1时,时钟CLK才能输入;CLR是复位输入端,高电平有效,异步清零;Q[3..0]是计数器低4位状态输出端,Q[7..0]是高4位状态输出端;COUT是进位输出端。 三、实验步骤 实验一:分频器 1、建立工程

自动计数器课程设计..

西安电子科技大学 长安学院课程设计实验报告 姓名: 学号: 指导老师:

自动计数器课程设计 摘要:自动计数器在日常生活中屡见不鲜,它是根据不同的情况设定的,能够通过技术功能实现一些相应的程序,如通过自动计数器来实现自动打开和关闭各种电器设备的电源。广泛用于路灯,广告灯,电饭煲等领域。 自动计数器给人们生产生活带来了极大的方便,而且大大地扩展了自动计数器的功能。诸如自动定时报警器、按时自动打铃、时间程序自动控制、定时广播、自动启闭电路,定时开关烤箱、甚至各种定时电器的自动启用等,所有这些,都是以自动计数器为基础的。由于它的功能强劲,用途广泛,方便利用,所以在这个电子科技发展的时代,它是一个很好的电子产品。如在洗衣机的定时控制以及路灯等一些人们不能再现场控制的操控。都可以利用自动计数器来完成这样的功用。可见此系统所能带来的方便和经济效益是相当远大的。因此,研究自动计数器及扩大其应用,有着非常现实的意义。 本次课设设计是检验理论学习水平、实践动手能力及理论结合实际的能力,要求具有一定的分析处理问题能力和自学能力的一个比较重要得实践课程。通过这样的过程,使我们的论文及实践水平有一次较为全面的检查,同时也使我们硬件方面的能力有所提高,对以后的学习有这非常重要的意义。 关键词:电器设备;自动计数器;电源 指导老师签名:

1. 设计任务及方案 1.1设计任务 设计并制作一个自动计数器,NE555构成时钟信号发生器,CD4518为二,十进制加计数器,CD4543为译码驱动器,调节R17课调节555的震荡频率,C1为充放电电容,电容越大,充点时间越长,振荡频率越低。 介绍了一种新型的自动计数器设计方法,以NE555构成计数脉冲信号发生器,CD4518为二/十进制加法计数器,CD4543为译码驱动器,与按键、数码管等较少的辅助硬件电路相结合,实现对LED数码管进行控制。本系统具有体积小、硬件少、电路结构简单及容易操作等优点。 本计数器可将机械或人工计数方式变为电子计数,并且采用LED数码显示,简单直观,可适用于诸多行业,以满足现代生产、生活等方面的需求。随着生产技术的不断改善和提高,在现代化生产的许多场合都可以看到计数器的使用。本计数器具有低廉的造价以及控制简单等特点。通过对计数脉冲的转换可使本计数器应用更为广泛。 2.电路原理 2.1 元器件的设计与参数 本小组设计的电路原理图所涉及的元器件有:电压为+5V的直流稳压电源;最大电阻为100K的滑动变阻器R17一个;有极性电容C1一个;无极性电容C2和C3; 开关SW一个;电阻R1~~R16总共16个;芯片有:NE555,CD4518,CD4543;以及共阴极7段数码显示器两个。

模可变计数器设计(Verilog语言)解答

模可变计数器设计 (一)实验目的 1、进一步熟悉实验装置和Quartus n软件的使用; 2、进一步熟悉和掌握EDA 设计流程; 3 、学习简单组合、时序电路的EDA 设计; 4、学习计数器中二进制码到BCD 码的转换技巧; 5、学习实验装置上数码管的输出方法。 (二)设计要求完成设计、仿真、调试、下载、硬件测试等环节,在EDA 实验装置上实现模可变计数器功能,具体要求如下: 1 、设置一个按键控制改变模值,按键按下时模为10-99 之间(具体数值自行确定)的 数,没按下时模为100-199 之间(具体数值自行确定)的数; 2、计数结果用三位数码管十进制显示。 (三) 主要仪器设备 3、微机 1 台 4、QuartusII 集成开发软件 1 套 5、EDA 实验装置 1 套 (四) 实验步骤 主要有三个模块 1:一个模20 和模119 的计数器 2:数码管的显示 3:BCD 的调整 源程序: module count (clk,m,en,rst,a,sel,SG,d); input clk,m,en,rst; output [7:0] SG; output [2:0] sel; output a; (* synthesis, keep *) reg clk1; (* synthesis, keep *) wire [3:0] gw,sw,bw; /*(* synthesis, keep *) */reg [3:0]a; reg [11:0] q; reg [11:0] model; reg [7:0] cnt,SG; reg [2:0] sel;

reg [0:0]d; output [0:0]d; always @(posedge clk) begin cnt=cnt+1; if (cnt==200) begin clk1=1'b1; cnt=0; end else clk1=1'b0; //200 分频,CLK 为数码管扫描频率,CLK1 为计数频率 if (sel<2) sel=sel+1; else sel=0; end //sel 为数码管选择 always @(sel) begin case (sel) 0: a=bw; //0 数码管为百位 1: a=sw; //1 数码管为十位 2: a=gw; //2 数码管为个位 default: a=0; endcase case (a) 0:SG<=8'b00111111; 1:SG<=8'b00000110; 2:SG<=8'b01011011; 3:SG<=8'b01001111; 4:SG<=8'b01100110; 5:SG<=8'b01101101; 6:SG<=8'b01111101; 7:SG<=8'b00000111; 8:SG<=8'b01111111; 9:SG<=8'b01101111; //8 段译码值default: SG=8'b11111111; endcase end always @(m) if (m) model=12'b000000100000; // 模值20 else model=12'b000100011001; // 模值119 assign gw=q[3:0]; assign sw=q[7:4]; assign bw=q[11:8]; always @(posedge clk1,negedge rst) begin if (!rst) q=0; else if (en) begin if (q

计数器设计和原理

二.计数器设计 1.实验目的 计数器在数字逻辑设计中的应用十分广泛,可以对时钟信号进行计数,分频和产生序列信号,也可以用在计时器和串并转换等电路。这次实验我们就来学习一下如何用Robei和Verilog语言来设计一个4比特计数器。 2.实验要求 计数器对每个时钟脉冲进行技术,并将计数值输出出来。这个实验我们来设计一个4比特的计数器,其技术范围在0~F之间,也就是计数到最大值16. 设计波形要求如图1所示。 图1. 计数器输出波形要求 3.实验内容 3.1 模型设计 1)新建一个模型。点击工具栏上的图标,或者点击菜单“File”然后在下 拉菜单中选择“New”,会有一个对话框弹出来(如图2所示)。在弹出的对话框中设置你所设计的模型。

图2. 新建一个项目 参数填写完成后点击“OK”按钮,Robei就会生成一个新的模块,名字就是counter,如图3所示: 图3. 计数器界面图 2)修改模型。在自动生成的界面图上进行名称的修改,输入引脚为clock, enable 和reset,输出引脚修改成count。其中count引脚的“Datasize”为4比特,用户可以输入4,也可以输入3:0。为了区分每个引脚,我们可以修改每个引脚的Color值,并点回车保存。修改完成后如图4所示。如果选中模块,按“F1”键,就会自动生成一个Datasheet,如图5所示。

图4. 修改引脚属性 图5. “Datasheet”截图 3)输入算法。点击模型下方的Code(如图6所示)进入代码设计区。

图6. 点击Code输入算法 在代码设计区内输入以下Verilog代码: always @ (posedge clock) //学习always语句的写法,并设置敏感信号。时钟上升沿触发begin //学习Verilog if else语句的写法 if (reset == 1) begin count<= 0; end //if enable is 1, counter starts to count else if (enable == 1) begin count <= count + 1; end end 4)保存。点击工具栏图标,或者点击菜单“File”中的下拉菜单“Saveas”, 将模型另存到一个文件夹中。 5)运行。在工具栏点击或者点击菜单“Build”的下来菜单“Run”,执 行代码检查。如果有错误,会在输出窗口中显示。如果没有错误提示,恭喜,模型counter设计完成。 3.2测试文件设计

步长可变的加减计数器

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity buchang is generic(N: integer:=4); port( clk,f1,a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16:in std_logic; --k :std_logic; --cq :out std_logic_vector(7 downto 0); q :out std_logic_vector(7 downto 0); ledag,ledag1 :out std_logic_vector(6 downto 0) ); end buchang; Architecture a of buchang is signal cnt: integer range 0 to n-1; signal k: integer range 0 to 15; signal clkout: std_logic; signal cq: std_logic_vector(7 downto 0); --q1<=q(3 downto 0); --q2<=q(7 downto 4); signal q1,q2: std_logic_vector(3 downto 0); Begin process(clk) begin if(clk'event and clk='1') then if(cnt

模可变16位加法计数器

课程设计任务书 学生姓名:专业班级: 指导教师:工作单位:信息工程学院 题目: 模可变16位加法计数器设计 初始条件: 可用仪器: PC机(Quartus II软件)硬件:EDA-IV型实验箱。 要求完成的主要任务: (1)设计任务 设计可变16位加法计数器,可通过3个选择位M2、M1、M0实现最多8种不同模式的计数方式,例如可构成5、10、16、46、100、128、200、256进制,共8种计数模式。 (2)时间安排: 2012.12.17 课程设计任务布置、选题、查阅资料 2012.12.18-21 设计,软件编程、仿真和调试 2012.12.22 2012.12.23 实验室检查仿真结果,验证设计的可行性和正确性,熟悉实验平台和试验箱 2012.12.24-26 设计的硬件调试 2012.12.27-28 机房检查设计成果,现场演示硬件实物,提交设计说明书及答辩 指导教师签名:年月日系主任(或责任教师)签名:年月日

目录 摘要.................................... 错误!未定义书签。Abstract ................................................ II 1 计数器的工作原理 (1) 2 设计原理 (3) 2.1 整体设计原理 (3) 2.2 单元模块的设计 (4) 2.2.1 计数模块的设计 (4) 2.2.2显示模块的设计 (5) 2.2.3分频模块的设计 (5) 2.2.4 顶层模块的设计 (5) 3 单元模块元件原理图 (6) 4 电路系统的功能仿真 (8) 5 硬件调试 (10) 6 个人小结 (12) 参考文献 (13) 附录 (14)

模100BCD码计数器设计

附录一:基于原理图的模100BCD码计数器的设计 1目的:1)练习用原理图输入设计;2)如何用数码管和二极管显示设计;3)如何仿真;4)如何绑定管脚。 2过程 2.1新建原理图文件。点击file->new->block diagram file->OK,如图2-1,图2-2,出现图2-3。 图2-1 新建文件。点击file->new。 图2-2 新建原理图文件。点击block diagram file->OK。

图2-3. 原理图设计输入区域。双击工作区域。 图2-4 宏单元输入界面。点击Library下的+。

图2-5 选用宏单元。键入74160。 2.2 输入设计。双击图2-3的工作区,出现图2-4。在+megafunctions,+others,+primitives中寻找需要的宏单元。也可在Name下输入知道名字的宏单元,如“74160”,“GND”,“VCC”等,如图2-5。 输入设计,如图2-6。存盘为m100_jishuqi,如图2-7。 图2-6 模100BCD码计数器。

图2-7 保存文件。 2.2为本设计建立工程,并放在文件夹..\m100_jishuqi\中。在图2-7中点击是(或点击file->newproject) 出现图2-8;点击next,出现图2-9;输入工程名字和顶层设计名字;点击next,出现图2-10,加入设计文件;点击next,出现图2-11,选择器件(cycloneII系列EP2C70F896C6);点击 next->next->finish。 图2-8 新建工程。点击Next。

图2-9 输入工程名字和顶层设计名字:mo100_jishuqi。 图2-10 把设计文件加入工程。

可置数的10位计数器的设计讲课教案

可置数的10位计数 器的设计

第二章 EDA实验内容 实验一可置数的10位计数器的设计 一、实验目的: 熟悉Lattice公司的ISPexpert软件,掌握采用EDA技术进行设计的过程,学会使用用VHDL语言进行电路设计。 二、实验内容: 1、编写可置数的10位计数器的VHDL程序。 2、进行逻辑编译、综合和优化。 3、进行软件仿真。 三、实验步骤: 1、建立新目录:如e:\ispexpert 。 2、启动ispDesign Expert : 选择“开始→程序→LatticeSemiconductor→ispDesign Expert”。进入ispEXPERT System Project Navigator(项目浏览器)主窗口。 3、创建一个新的设计项目: 在ispEXPERT System Project Navigator主窗口中,选择File→New Project,建立一个新的工程文件。此时会弹出如下对话框。 注意:在该对话框中的Project Type栏中,必须根据设计类型选择相应的工程文件的类型。将该工程文件保存在E:\ispexpert路径下,取名ls160.syn。 收集于网络,如有侵权请联系管理员删除

4、项目命名: 用鼠标双击Untitled,出现对话框,在Title文本框中输入“ls160 Project”,按OK。 5、选择器件:双击ispLSI15256VE-165LF256,出现 Device Selector对话框, →ispls1032E-70LJ84,按OK按钮。 选择ispLSI 1k Device→ispLSI 1032E (1)从菜单上选择“Source→new” 收集于网络,如有侵权请联系管理员删除

模可变计数器

南昌大学实验报告 学生姓名:郑西冰学号:6100209045专业班级:电子091班 实验类型:□验证□综合□设计□创新实验日期:实验成绩: 实验二:模可变计数器 一、实验目的 1.学习一般的数字电路设计; 2.学习数码管的输出方法; 3.进一步熟悉Quartes II集成开发软件的使用以及PH-1V型实验装置的使用 二、实验要求 学习多层次设计法,设置一位控制位M,要求M=0:模24计数;M=1:模100计数;计数结果用静态数码管显示。 三、实验步骤: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY FENP IS PORT(CLK:IN BIT; CLK1:BUFFER BIT); END ENTITY; ARCHITECTURE OO OF FENP IS BEGIN PROCESS(CLK) V ARIABLE TEMP1: NA TURAL; BEGIN IF CLK'EVENT AND CLK='1' THEN TEMP1:=TEMP1+1; IF TEMP1=400 THEN TEMP1:=0; CLK1<=NOT CLK1; END IF; END IF; END PROCESS; END; 将其转换成可调用元件:

libraryieee; use ieee.std_logic_1164.all; useieee.std_logic_unsigned.all; entity cnt109 is port(clk,rst,en,M:instd_logic; cq,cqq,cqqq: out std_logic_vector (3 downto 0)) ; end cnt109; architecturebehav of cnt109 is begin process(clk,rst,en,M) variable cq1:std_logic_vector (11 downto 0); variable Z:std_logic_vector (11 downto 0); begin case M is when '0' => Z:="000000100100"; when '1' => Z:="000100000000"; end case; ifrst='1' then cq1:=(others=>'0'); elsifclk'event and clk='1' then if en='1' then if cq1'0') ; end if; end if; end if; cq<=cq1( 3 downto 0);cqq<=cq1 ( 7 downto 4 ) ;cqqq<=cq1 ( 11 downto 8); end process; endbehav; 将其转换成可调用元件:

基于Verilog-的任意模长可加减计数器设计

基于Verilog的任意模长可加减计数器设计 一、设计要求 计数器是一种在时钟的触发下,完成计数功能的时序逻辑电路,输出结果由输入时钟和计数器上一状态的计数共同决定。本设计要求实现的计数器,具有以下功能: (1)要求实现计数器工作状态的控制; (2)要求实现计数器的异步清零功能; (3)要求实现计数器递增和递减的功能; (4)要求实现计数器的计数范围(模长)任意改变; 二、设计思路 计数器工作状态的控制,可以设计一个使能端,在外部时钟的触发下,只有当使能端信号有效(高电平),才启动计数器的计数功能(递增或递减),否则计数器输出结果不变。 计数器的异步清零功能,可以设计一个外部输入的清零端,在外部输入信号有效(低电平)的情况下,直接清零计数器,不用等待下一个外部时钟的触发,即计数器的清零是异步的。 计数器计数方向的控制,设计一个加减可控的信号端口,在时钟的触发、异步清零无效以及计数器使能端有效的情况下,该输入端为高电平则计数器完成递增功能,低电平则完成递减功能。 实现计数器的任意模长,即进入下一个计数周期,其计数的最大值可以发生变化。设计一个4位(最大模长为16)的输入端口,可以在当前计数周期结束,即计数器产生一个溢出信号的同时,判断该端口输入的信号是否发生变化,通过相邻两个计数周期的端口数据作异或运算,结果为高电平则代表模长发生变化,即进入的下一个计数周期,其计数最大值要发生变化。 三、程序设计 本次设计使用的是Quartus 11.0开发环境,该软件没有自带仿真功能(9.0版本以后都没自带),需要使用第三方的Modelsim 软件,故本设计的程序包括计数器的Verilog设计以及仿真测试需要的testbench激励文件两部分。 计数器的Verilog设计:

用JKFF设计模为8的加法计数器

用JKFF 设计模为8的加法计数器 步骤1: 分析题意 根据题目所给的条件,待设计的计数器默认为模为8的加法器,不需要求加载初值。电路只需要故电路只需时钟输入端clk ,clk 作为电路的同步时钟,不必当做输入变量对待;输出一个8进制数要3个输出端,记为Q 0Q 1Q 2。要有输出信号Y ,故共需要3个输出端。因输出量Q 0Q 1Q 2就是计数值,故采用Moore 型电路较为合适。 步骤2:建立原始状态图 模8加法器要求逢8加1,。有此状态图做出如图所示。需要8个状态故不需要化简。 步骤3:状态分配。 由于最大模的值为8,因此必须取代码位数n=3。假设S0=000,S1=001,S2=010,S3=011,S4=100,S5=101,S6=110,S7=111.则可以做出状态转移表如图。 步骤4:选触发器,求时钟、输出、状态、驱动方程。 因需要3位二进制代码,选用三个CP 下降沿出发的J-K 触发器,分别用FF0,FF1,FF2表示。 输入 现态 次态 输 出 CP Q2 Q1 Q0 12+n Q 1 1+n Q 10+n Q Y 0 0 0 0 0 0 1 0 1 0 0 1 0 1 0 0 2 0 1 0 0 1 1 0 3 0 1 1 1 0 0 0 4 1 0 0 1 0 1 0 5 1 0 1 1 1 0 0 6 1 1 0 1 1 1 0 7 1 1 1 1

有状态列表可作出次态卡诺图及输出函数的卡诺图,如下图所示。 与J-K 触发器的特性方程n n n Q K Q J Q +=+1比较得到驱动方程 n n n n n n n n Q Q Q Q Q Q Q Q 122012012++=+ n n n Q Q Q Y 210= n n Q Q K J 1022== 步骤五 画出逻辑电路图 n Q 0 n n Q Q 12 00 01 11 10 0 1 1 1 1 1 n Q 0 n n Q Q 12 00 01 11 10 0 0 1 1 0 1 1 n Q 0 n n Q Q 12 00 01 11 10 0 0 0 1 1 1 1 1 n Q 0 n n Q Q 12 00 01 11 10 0 0 0 0 0 1 1

相关文档
最新文档