EDA60进制计数器设计
- 格式:doc
- 大小:82.00 KB
- 文档页数:4
《EDA技术》课程实验报告学生姓名:**所在班级:***指导教师:**记分及评价:报告满分3分得分一、实验名称实验6:60进制计数器设计二、任务及要求【基本部分】1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成60进制计数器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】在60进制基础上设计6进制计数器,完成时序仿真。
三、实验程序library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cnt60 isport(clk,rst:in std_logic;seg:out std_logic_vector(7 downto 0);dig:out std_logic_vector(1 downto 0));end;architecture one of cnt60 issignal t:std_logic_vector(23 downto 0);signal clk_cnt,clk_scan:std_logic;signal q:integer range 0 to 59;signal d:integer range 0 to 9;beginprocess(clk)beginif clk'event and clk='1'thent<=t+1;end if;end process;clk_cnt<=t(23);clk_scan<=t(16);process(rst,clk_cnt)beginif rst='0'thenq<=0;elsif clk_cnt'event and clk_cnt='1'then if q=59 thenq<=0;elseq<=q+1;end if;end if;end process;process(clk_scan)begincase clk_scan iswhen'0'=> dig<="10";d<=q mod 10;when'1'=> dig<="01";d<=q/10;when others=>dig<="11";end case;end process;with d selectseg <= X"C0" when 0,X"F9" when 1,X"A4" when 2,X"B0" when 3,X"99" when 4,X"92" when 5,X"82" when 6,X"F8" when 7,X"80" when 8,X"90" when 9,X"FF" when others;end;四、硬件验证1、引脚锁定情况表:五、小结这次实验是运用QuartusII软件对六十进制计数器进行仿真。
六十进制计数器一、设计任务利用Verilog HDL 编程语言编写代码并下载到试验箱中,在七段数码管上实现六十进制计数器的功能。
二、设计过程程序中输入信号为时钟信号clk和异步置数端clr,输出信号为七位的out端和两位的选通信号ctr。
为实现六十进制计数器的功能,程序中使用了三个always块语句,第一个always块结合第三个always块共同实现了七段数码器的功能,即将十进制数字在七段译码管上正确显示。
代码实现为:always @ (posedge clk or negedge clr)beginif(!clr) begin state=s0 ; ctr=0 ;endelsebegincase (state)s0:begin ctr=2'b10; temp=temp_a; state=s1; ends1:begin ctr=2'b01; temp=temp_b; state=s0; endendcaseif(cp==2)beginc=1;cp=0;endelsebegincp=cp+1;c=0;endendendalways @ (temp)begincase(temp)4'd0:out=7'b1111110;4'd1:out=7'b0110000;4'd2:out=7'b1101101;4'd3:out=7'b1111001;4'd4:out=7'b0110011;4'd5:out=7'b1011011;4'd6:out=7'b1011111;4'd7:out=7'b1110000;4'd8:out=7'b1111111;4'd9:out=7'b1111011;default:out=7'b0000000;endcaseendendmodule第二个always块则使用控制语句实现了{temp_a,temp_b}从0到59的跳转,实现了六十进制计时器的基本功能。
《EDA技术》课程实验报告学生姓名:黄红玉所在班级:电信1002指导教师:高金定老师记分及评价:一、实验名称实验2:60进制计数器的设计二、任务及要求【基本部分】4分1、在QuartusII平台上,采用原理图输入设计方法,调用两片74160十进制计数器,采用反馈置数法,完成一个60进制同步计数器的设计,并进行时序仿真。
2、要求具备使能功能和异步清零功能。
3、设计完成后生成一个元件,以供更高层次的设计调用。
4、实验箱上选择恰当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。
【发挥部分】1分思考:采用反馈清零法设计的计数器与反馈置数法有何不同?请用实例进行仿真。
三、实验程序(原理图)四、仿真及结果分析设计60进制与设计24进制的步骤几乎一样。
调用两片74160十进制计数器,采用反馈置数法,设计一个60进制同步计数器的思路是,一片74160计数器作为个位计数,一片用来十位计数,要实现同步60进制,则个位接成1001,十位接成0101,再用一个五输入(一段接一个使能信号EN)的与非门同时接到两片74160计数器上的置数端LDN上。
把原理图在QuartusII上画成后,进行编译,编译无误后,在新建一个波形文件,添加所有引脚,设置输入引脚的波形,最后在进行波形编译,无误后即可达到想要的60进制。
然后再根据EPF10K30E144芯片引脚对照,输入各个输入输出引脚的引脚号,再链接到试验箱检验,观察数码管的显示结果。
五、硬件验证1、选择模式:模式72、引脚锁定情况表:六、小结在这次试验中,通过指导老师起初的讲解以及阅读相关课本,我对QuartusII平台有了进一步的了解,初步知道整个设计过程。
在设计过程中,许多问题的暴露使得我们不仅对数字电路原理有了更加深刻的了解,也使我们对QuartusII平台的使用规则有了更多的了解。
掌握这门技术为今后更多的设计工作打下了基础,我受益匪浅。
60进制计数器课程设计60进制计数器设计 (1)绪论 (1)1.1设计背景 (1)1.2设计思想 (1)2器件介绍 (2)2.1电阻 (2)2.2电容 (3)2.3 555秒发⽣器 (3)2.4 74ls00 (5)2.574ls90 (6)2.674ls48 (7)3软件仿真 (8)3.1 555仿真图 (8)3.2 60进制仿真图 (9)3.3 仿真图 (9)4焊接⽅法 (11)4.1焊接⽅法 (11)4.2 注意事项 (12)4.3调试 (12)4.4实际图 (13)5总结 (14)6致谢 (16)7 参考⽂件 (17)60进制计数器设计摘要:60进制计数器的设计是以数电和模电为基础,结合模电⾥⾯的置零⽅法,利⽤了555芯⽚、74ls00、74ls48、74ls90以及显⽰管和各种电阻电容组成的。
利⽤74ls90可以实现制数功能,可以单独制成⼗进制。
利⽤74ls00(与⾮门)与74ls90可以制成6进制,再利⽤74ls48和显⽰管就可以在基于EWB的软件平台上完成该设计。
本设计采⽤较为常⽤的74系列芯⽚,及555芯⽚实现了信号灯与信号脉冲同步实现、同步控制,进⽽提⾼了整个系统的稳定性、独⽴性。
在实际⽣活中我们⽤60进制的有钟表的秒分进制。
随着我国科学技术与⾼科技的发展,对于仪器精度的要求更加的⾼,为了满⾜中国⾼科技的发展需求研究⾼精度计数器对于我国的航天、电⼦等业务具有很⼤的作⽤.关键字:60进制555芯⽚74ls00 74ls48 74ls90绪论1.1设计背景计数器是⼀个⽤以实现计数功能的时序部件,它不仅可⽤来及脉冲数,还常⽤作数⼦系统的定时、分频和执⾏数字运算以及其它特定的逻辑功能。
⽬前,⽆论是TTL还是CMOS集成电路,都有品种较齐全的中规模集成计数器。
使⽤者只要借助于器件⼿册提供的功能和⼯作波形图以及引出端的排列,就能正确运⽤这些器件。
计数器在现代社会中⽤途中⼗分⼴泛,在⼯业⽣产、各种和记数有关电⼦产品。
表1 十进制计数器功能表CP RD` LD` EP ET 工作状态×0 ××置零↑ 1 0 ××预置数× 1 1 0 1 保持× 1 1 ×0 保持↑ 1 1 1 1 计数连接方式如图:图2 十进制计数器(个位)2、十进制计数器(十位)电路图3 十进制计数器(十位)3、时钟脉冲电路图4 时钟脉冲电路4、置数电路图5 置数电路5、进位电路图6 进位电路6、译码显示电路图7 译码显示电路三、绘制原理图1、完整原理图图7 计数器原理图2、选定仪器列表仪器名称型号数量用途同步十进制计数器74LS160 2片极联构成60进制计数器与门与非门非门74LS21D74LS00D74LS04D各1个辅助设计构成其他计数器共阴极显示器DCD-HEX 2只显示数字计数电压源1个提供脉冲电压表二原理图仪器列表四、测试方案测试步骤:1)进入Multisim7界面图8 软件页面2)右击空白处,选择放置元件,进入元器件选择区,选择要放置的元件,然后单击好。
图9 放置元件3)放置好各种器件之后,即可进行线路连接,同时标明所需参数值。
设置元器件的参数时,用鼠标双击,弹出属性对话框,分别给元件赋值,并设置名称标号。
图10 元器件属性图4)确认电路无误后,即可单击仿真按钮,实现对电路的仿真工作。
5)观察结果看是否与理论分析的预测结果相同。
五、测试验证结果与分析1、验证结果以下两个仿真结果分别是计数器计数的仿真起点00和仿真终点59,之后计数器会自动恢复原来的00起点继续进行循环计数,并且进位输出灯会在59时发光。
图11 60进制计数器起点00 图12 60进制计数器终点592、理论分析本计数器由两个10进制计数器构成60进制计数器的接线图,右边的10进制计数器作为个位,左边的10进制计数器作为十位。
输入端全部接地,计数开始循环一周后通过置位法自动进行归00,之后再继续循环计数。
《EDA技术》课程实验报告学生姓名:所在班级:电信1001指导教师:记分及评价:项目满分5分得分一、实验名称60进制计数器设计二、任务及要求【基本部分】4分1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成60进制计数器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上选择恰当的模式进行验证,目标芯片为ACEX1K系列EP1K30TC144-3。
【发挥部分】1分在60进制基础上设计6进制计数器,完成时序仿真。
三、实验程序Library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;Entity j602 Isport (clk:in std_logic;ent:in std_logic;rst:in std_logic;y0: out std_logic_vector(3 downto 0);y1: out std_logic_vector(3 downto 0);cout: out std_logic);End j602;Architecture j602 of j602 issignal cnt0 :std_logic_vector(3 downto 0);signal cnt1 :std_logic_vector(3 downto 0);Begincout<='1' when (cnt1="0101" and cnt0="1001" and ent = '1') else '0';process(clk,rst)BeginIf rst ='0' Thencnt0<="0000";cnt1<="0000";elsif clk'event and clk='1' Thenif ent = '1' Thenif cnt0="1001" Thencnt0<="0000";if cnt1="0101" Thencnt1<="0000";elsecnt1<=cnt1+1;end if;elsecnt0<=cnt0+1;end if;end if;end if;end process;y0<=cnt0;y1<=cnt1;end j602;四、仿真及结果分析五、硬件验证1、选择模式:模式5六、小结通过这次实验,使我明白了用VHDL语言编程和用设计原理图实现同样功能器件的区别,从而加深的对EDA的理解。
六进制vhdl语言设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt6 ISPORT(CLK,CLRN,ENA,LDN:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END cnt6;ARCHITECTURE ONE OF cnt6 ISSIGNAL CI:STD_LOGIC_VECTOR (3 DOWNTO 0):="0000"; BEGINPROCESS (CLK,CLRN,ENA,LDN,CI)BEGINIF CLRN='0' THEN CI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF LDN='0' THEN CI<=D;ELSIF ENA='1' THENIF CI<5 THEN CI<=CI+1;ELSE CI<="0000";END IF;END IF;END IF;Q<=CI;END PROCESS;COUT<=CI(0) AND CI(2);END ONE;十进制vhdl语言设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY cnt10 ISPORT(CLK,CLRN,ENA,LDN:IN STD_LOGIC;D:IN STD_LOGIC_VECTOR(3 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0);COUT:OUT STD_LOGIC);END cnt10;ARCHITECTURE ONE OF cnt10 ISSIGNAL CI:STD_LOGIC_VECTOR (3 DOWNTO 0):="0000"; BEGINPROCESS (CLK,CLRN,ENA,LDN,CI)BEGINIF CLRN='0' THEN CI<="0000";ELSIF CLK'EVENT AND CLK='1' THENIF LDN='0' THEN CI<=D;ELSIF ENA='1' THENIF CI<9 THEN CI<=CI+1;ELSE CI<="0000";END IF;END IF;END IF;Q<=CI;END PROCESS;COUT<=CI(0) AND CI(3);END ONE;分别把上面程序生成符号文件画如下原理图:波形仿真图如下:。
级联。
4)两个芯片间的级联。
2.六十进制计数器设计描述2.1设计的思路1)芯片介绍:74LS192 为加减可逆十进制计数器,CPU端是加计数器时钟信号,CPD是减计数时钟信号RD=1时无论时钟脉冲状态如何,直接完成清零功能。
RD=0,LD=0 时,无论时钟脉冲状态如何,输入信号将立即被送入计数器的输出端,完成预置数功能。
2)十进制可逆计数器74LS192引脚图管脚及功能表3)74LS192是同步十进制可逆计数器,它具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下所示:图5-4 74LS192的引脚排列及逻辑符号(a)引脚排列(b) 逻辑符号图中:为置数端,为加计数端,为减计数端,为非同步进位输出端,为非同步借位输出端,P0、P1、P2、P3为计数器输入端,为清除端,Q0、Q1、Q2、Q3为数据输出端。
输入输出MR P3 P2 P1 P0 Q3 Q2 Q1 Q01 ×××××××0 0 0 00 0××d c b a d c b a0 11××××加计数1 1 ××××减计数4)利用两片74ls192分别作为六十进制计数器的高位和低位,分别与数码管连接。
把其中的一个芯片连接构成十进制计数器,另一个通过一个与门器件构成一个六进制计数器。
5)如下图:2.2设计的实现1)两芯片之间级联;把作高位芯片的进位端与下一级up端连接这是由两片74LS192连接而成的60进制计数器,低位是连接成为一个十进制计数器,它的clk端接的是低位的进位脉冲。
高位接成了六进制计数器。
当输出端为0101 的时候在下个时钟的上升沿把数据置数成0000 这样就形成了进制计数器,连个级联就成为了60进制计数器,分别可以作为秒和分记时。
2)方案的实现:使用200HZ时钟信号作为计数器的时钟脉冲。
《EDA技术》课程实验报告
学生姓名:
所在班级:
指导教师:
记分及评价:
报告满分3分
得分
一、实验名称
实验6:60进制计数器设计
二、任务及要求
【基本部分】
1、在QuartusII平台上,采用文本输入设计方法,通过编写VHDL语言程序,完成60进制计数器的设计并进行时序仿真。
2、设计完成后生成一个元件,以供更高层次的设计调用。
3、实验箱上进行验证。
【发挥部分】
在60进制基础上设计6进制计数器,完成时序仿真。
三、实验程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity sixth is
port(clk:in std_logic;
co:out std_logic;--jin wei
qh:buffer std_logic_vector(3 downto 0);--shi wei
ql:buffer std_logic_vector(3 downto 0));--ge wei
end entity sixth;
architecture art of sixth is
begin
co<='1'when(qh="0101"and ql="1001")else'0';
process(clk)
begin
if(clk='1')then
if(ql=9)then
ql<="0000";
if(qh=5)then
qh<="0000";
else
qh<=qh+1;
end if;
else
ql<=ql+1;
end if;
end if;
end process;
end architecture art;
四、仿真及结果分析
图6-1 60进制计数器仿真图
用VHDL语言实现一个六十进制计数器,该计数器有计数使能端en,清零端clr和进位输出端co。
档en=1时,计数器正常计数;当clr=1时,计数器清零。
最后在试验箱上仿真,数码管显示了0到59,则60进制计数器完成。
五、硬件验证
1、选择模式:
2、引脚锁定情况表:
六、小结
1、六进制程序
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity six is
port(clk,en,clr:in std_logic;
co:out std_logic;--jin wei
qh:buffer std_logic_vector(3 downto 0));--shi wei
end entity six;
architecture art of six is
begin
co<='1'when(qh="0101" and en='1')else'0';
process(clk)
begin
if(clr='0')then
qh<="0000";
elsif(clk'event and clk='1')then
if(en='1') then
if(qh=5)then
qh<="0000";
else
qh<=qh+1;
end if;
end if;
end if;
end process;
end architecture art;
2、六进制仿真结果
图6-2 6进制计数器仿真图
3、总结
这次实验仿真了六十进制计数器运用到了QuartusII软件。
通过学习设计,初步掌握了QuartusII软件的使用并且深入地体会到VHDL语言的广泛应用。
这次实验让我感觉收获颇多,一方面培养了我用自己的专业知识解决问题的能力,进一步理解了理论必须运用于实际的重要性,加深了我对这门课程及专业知识的理解,对以后的工作学习生活都有很大的意义;另一方面我也发现自己很多的不足,对以前所学过的知识理解得不够深刻,掌握得不够牢固,这都是自己以后需要深入学习和克服的问题。
在今后的学习中,我会发挥积极主动的精神,把所学知识与实践结合起来,努力掌握Quartus II 设计软件和VHDL设计语言的使用方法。