verilog程序-60进制计数器

合集下载

60进制计数器verilog原理

60进制计数器verilog原理

60进制计数器verilog原理Verilog原理:实现60进制计数器Verilog是一种硬件描述语言,用于设计和开发数字电路。

在本文中,我们将使用Verilog来实现一个能够进行60进制计数的计数器。

首先,我们需要定义计数器的功能和输入输出。

对于一个60进制计数器,我们将使用一个8位的二进制数表示计数器的当前值。

计数器将具有一个时钟脉冲输入(clk)和一个复位输入(reset)。

接下来,我们将定义计数器的行为。

当时钟脉冲输入(clk)变为高电平时,计数器的值将递增1。

当计数器的值达到60时,它将被重置为0。

下面是使用Verilog实现60进制计数器的代码示例:```verilogmodule counter_60(input wire clk,input wire reset,output wire [7:0] count);reg [7:0] count;always @(posedge clk) beginif(reset)count <= 8'b0;else if(count == 8'b111011) // 当计数器的值达到60时,重置为0count <= 8'b0;elsecount <= count + 1;endendmodule```以上代码中,我们使用`reg`关键字声明了一个8位的寄存器`count`,用于存储计数器的当前值。

`always @(posedge clk)`表示在时钟上升沿触发时执行以下代码块。

在代码块中,我们首先检查复位信号(reset)是否为高电平。

如果是,计数器的值将被重置为0。

接下来,我们使用一个条件语句判断计数器的值是否为59(8'b111011)。

如果是,计数器的值将重置为0。

否则,计数器的值递增1。

最后,我们将计数器的值作为输出wire `count`进行输出。

通过将以上代码编译为Verilog硬件描述语言的通用代码格式,我们可以在FPGA或ASIC芯片上实现一个用于60进制计数的计数器。

60进制计数器的设计

60进制计数器的设计

本科学生设计性实验报告项目组长_学号_成员专业_通信工程__班级_实验项目名称_ 60进制计数器的设计指导教师及职称_________开课学期 2011 至_2012 学年_第二_学期上课时间 2012 年 4 月 16 日一、实验设计方案实验名称:60进制计数器的设计实验时间:2012-4-16小组合作:是○否●小组成员:1、实验目的:熟悉QuartusⅡ的Verilog文本设计流程全过程,学习计数器的设计、仿真和硬件测试。

掌握原理图与文本混合设计方法。

实验要求:1.使用三种以上方法进行设计和仿真2.每种方法要有详细的设计程序和仿真结果3.对比每种方法的实现的RTL图4.选择一种在硬件上实现,并绘出详细实验步骤和实验步骤截图,最后描述实验结果2、实验场地及仪器、设备和材料:实验场地:电脑,quartus II软件,GW48EDA/SPOC主系统实验箱3、实验思路(实验内容、数据处理方法及实验步骤等):实验内容:用Verilog设计一个60进制计数器,要求用三种方式。

1. 打开QuartusII软件,建立一个新的工程:1) 单击菜单File\New Project Wizard…2) 输入工程的路径、工程名以及顶层实体名。

3) 单击Next>按钮,由于我们建立的是一个空的项目,所以没有包含已有文件,单击Next>继续。

4) 设置我们的器件信息:2.建立Verilog文件:1) 单击File\New菜单项,选择弹出窗口中的Verilog File项,单击OK按钮以建立打开空的Verilog文件。

2) 在编辑窗口中输入Verilog源文件并保存,注意实体名、文件名必须和建立工程时所设定的顶层实体名相同。

3) 编译工程单击Processing\Start Compilation开始编译,编译过程中可能会显示若干出错消息,参考提示原因对程序进行修改直到编译完全成功为止。

根据书上的例子做出了如下的三种方法:(1)方式一:(2)方式二:(3)方式三指导老师对实验设计方案的意见:指导老师签名:年月日二、实验结果与分析1、实验目的、场地及仪器、设备和材料、实验思路等见实验设计方案2、实验现象、数据及结果实验现象:(1)方式一:生成如下图电路模型:得到下图为波形图:(2)方式二:生成电路模型如图所示:得到的波形图如图所示:(3)方式三:得到电路模型如图所示:得到波形图如图所示:3、对实验现象、数据及观察结果的分析与讨论:通过实验过程,可以得到实验的相关图像,可能由于实验过程差不多所以得到的结果是差不多的。

六十进制计数器

六十进制计数器

单击Next单击Next单击Next单击Next单击Next单击Finish建好工程后,新建“Verilog HDL Files”,步骤如下图:单击此按钮选中Verilog HDL Files,单击OK 再出现的text编辑窗口中输入六进制的代码如下:注意所保存的文件名要和模块的名字一致然后就是编译:1.首先将文件置为顶层文件,两种方式:①快捷键“ctrl+shift+J”②菜单栏选中project——>Set as Top_level entity2.进行仿真:①快捷键“ctrl+L”②单击按钮③Processing——>Start Compilation编译成功后就是进行仿真了:新建仿真文件:选择Vector Waveform File,单击OK在左边空白处,右击后选择Insert,再选择Insert Node and Bus单击Node Finder…Filter:选择Pin:all,单击list,左边框中出现顶层文件中的端口,选中需要的端口,单击中间’>’按钮,即可导入,单击按快捷键“ctrl+S”,保存仿真文件,命名为“cnt6”,之后,菜单栏——>Processing——>simulator Tool: 先进行时序仿真,选中mode为Timing,选则input文件为cnt6.vwf,点击start:单击“Generate Functional Simulation Netlist”,单击start,进行功能仿真:2.VerilogHDL编写十进制计数器:具体步骤同上1,只把代码截图和仿真波形截图附上:时序仿真波形图如下:功能仿真波形如下图:3.VerilogHDL编写译码器:具体步骤同上1,只把代码截图和仿真波形截图附上:时序仿真波形图如下:功能仿真波形如下图:4.将以上三个模块级联获得60进制计数器,显示在数码管上:(1)先将三个模块生成符号文件,将模块文件置为顶层文件后,File——>Creat/update ——>Creat Symbol Files for Current file(2)新建Block diagram/Schematic Files.保存后,将此文件置为顶层文件,进行编译。

60进制计数器实验报告

60进制计数器实验报告

60进制计数器实验报告60进制计数器实验报告引言:计数器是一种常见的电子设备,用于记录和显示数字。

在日常生活中,我们常见的计数器是十进制计数器,即由0到9的数字循环计数。

然而,在某些特殊的应用场景中,十进制计数器可能不够灵活。

本实验旨在设计和实现一种60进制计数器,以满足特定需求。

实验目的:1. 设计并实现60进制计数器电路;2. 验证60进制计数器的功能和准确性;3. 探讨60进制计数器的应用价值。

实验原理:十进制计数器是通过使用4位二进制计数器和逻辑门电路来实现的。

同样地,60进制计数器可以通过使用更多位的二进制计数器和逻辑门电路来实现。

在本实验中,我们使用6位二进制计数器和逻辑门电路来构建60进制计数器。

实验材料:1. 74LS74型D触发器芯片 x 62. 74LS00型与非门芯片 x 23. 74LS08型与门芯片 x 14. 连线材料5. 示波器6. 电源实验步骤:1. 根据电路原理图,连接各个芯片和逻辑门,确保连接正确无误。

2. 将电源接入电路,注意电压和接线的正确性。

3. 使用示波器观察计数器输出的波形,并检查是否按照预期进行计数。

实验结果:经过实验,我们成功地设计并实现了60进制计数器。

计数器在每个时钟脉冲的作用下,能够准确地按照60进制进行计数,并输出相应的波形。

通过示波器观察,我们可以清晰地看到计数器的计数过程,以及在达到最大计数值后的溢出现象。

实验讨论:60进制计数器的设计和实现为特定领域的计数需求提供了解决方案。

例如,在时间测量中,60进制更符合人们对时间的感知和使用习惯。

此外,60进制计数器还可以应用于音乐节拍器、航天导航等领域,提供更灵活和精确的计数方式。

然而,60进制计数器也存在一些限制和挑战。

首先,由于60不是2的幂次,所以构建60进制计数器的硬件复杂度较高。

其次,60进制计数器在数字显示和数据传输方面需要进行转换,增加了额外的工作量和成本。

结论:通过本实验,我们成功地设计并实现了60进制计数器。

60进制计数器进位信号和归零逻辑

60进制计数器进位信号和归零逻辑

60进制计数器进位信号和归零逻辑
在传统的计数系统中,我们经常使用十进制计数器,即使用0-9的数字进行计数。

然而,在某些特定的应用场景中,十进制计数器可能不够灵活。

这时,我们可以考虑使用其他进制计数器,如60进制计数器。

在60进制计数器中,我们使用的数字从0到59,而不再是0到9。

这意味着我们可以更精确地计数,并且可以在更长的时间段内进行计数,而不需要进行进位。

那么,进位信号和归零逻辑在60进制计数器中是如何工作的呢?
首先,我们需要确定计数器的位数。

在十进制计数器中,我们通常使用10位二进制数字进行计数,而在60进制计数器中,我们需要使用更多的位数,以便能够表示60个不同的数字。

当一个位达到60时,它就需要进位了。

进位信号会被发送给下一位,使其加1。

这个过程类似于十进制计数器中的进位操作,只不过进位的基数变成了60。

当最高位达到60时,我们可以选择两种方式来处理。

一种方式是忽略进位,继续递增最高位。

这意味着我们可以计数到最高位达到59,
然后归零重新计数。

另一种方式是将最高位的进位信号发送给其他系统,以触发一些特定的操作。

归零逻辑也是十分重要的。

当我们需要将计数器归零时,我们需要将所有位的值都设置为0。

这可以通过将每一位的进位信号发送给下一位来实现,直到最低位。

总之,60进制计数器的进位信号和归零逻辑与十进制计数器类似,只不过进位的基数变成了60。

这使得60进制计数器可以更灵活地进行计数,并且适用于一些特定的应用场景。

60计数器工作原理

60计数器工作原理

60计数器工作原理
60计数器是一种数字电路元件,用于实现60进制的计数功能。

其工作原理如下:
1. 输入信号:60计数器通常有一个时钟输入信号。

当时钟信
号的一个脉冲到达时,计数器会按照特定的规则进行计数。

2. 初始化:计数器在初始状态下一般为0,即所有计数位上都
为0。

3. 计数规则:60计数器通常由多个计数位组成,每个计数位
都有两种状态:0和1。

当计数器接收到一个时钟脉冲时,它
会根据特定的规则将计数位递增,并将进位(carry out)信号
传递到高位。

4. 进位规则:在60计数器中,当最低位计数位达到其最大值(59时),它会产生一个进位信号。

这个进位信号会传递给
高位计数位,引起它们进行递增。

5. 循环:当最高位计数位达到其最大值时(59时),它也会
产生一个进位信号。

这个进位信号又会传递到最低位计数位,从而形成一个循环。

整个计数器会在0到59之间循环计数。

6. 外部控制:60计数器通常还有一些控制信号,如使能信号
和复位信号。

使能信号可以控制计数器的启用与禁用,而复位信号可以将计数器的状态重置为初始状态。

通过上述工作原理,60计数器可以实现60进制的计数功能,用于计时、频率分频、时钟同步等应用。

60进制计数器原理

60进制计数器原理

60进制计数器原理60进制计数器是一种特殊的计数器,它可以用于表示60进制的数字。

在日常生活中,我们常常使用60进制计数器来表示时间,比如小时、分钟和秒。

在这篇文档中,我们将介绍60进制计数器的原理及其应用。

首先,让我们来了解一下60进制计数器的基本原理。

60进制计数器是一种基于60进制的数字系统,它由60个不同的数字组成,分别是0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F、G、H、I、J、K、L、M、N、O、P、Q、R、S、T、U、V、W、X、Y、Z、a、b、c、d、e、f、g、h、i、j、k、l、m、n、o、p、q、r、s、t、u、v、w、x、y、z、!、?、@、#、$、%。

这些数字可以组合成任意大小的数字,用来表示时间、角度、经纬度等。

接下来,让我们来看一下60进制计数器的应用。

在日常生活中,我们经常使用60进制计数器来表示时间。

例如,一天有24小时,每小时有60分钟,每分钟有60秒。

这种时间表示方法就是基于60进制计数器的原理。

另外,60进制计数器还可以用于表示角度。

在几何学和航海领域,我们经常使用60进制计数器来表示角度。

例如,一圈360度可以被表示为60进制的数值,这样可以更加方便地进行计算和测量。

除了时间和角度之外,60进制计数器还可以应用于其他领域。

在计算机科学中,我们经常使用60进制计数器来表示数据存储地址。

在地理信息系统中,我们也可以使用60进制计数器来表示经纬度。

总的来说,60进制计数器在各个领域都有着广泛的应用。

综上所述,60进制计数器是一种基于60进制数字系统的计数器,它可以用于表示时间、角度、数据存储地址等。

通过了解60进制计数器的原理及其应用,我们可以更好地理解其在日常生活和各个领域中的重要性和作用。

希望本文可以帮助您更好地理解60进制计数器,并在实际应用中发挥其作用。

Verilog机组实验计数器

Verilog机组实验计数器

计数器+ALU实验
实验内容
1、ALU实现及仿真
2、计数器实现及仿真
3、ALU+计数器综合实现及仿真
实验原理
1、A LU实现及仿真
使用Verilog HDL代码编程方式构建ALU181元件符号,生成ALU模块。

主要步骤:
(1)建立工程(注意工程名字和文件夹名字一致)
(2)编辑ALU181.v文件,并生成元件符号
(3)建立原理图文件,调用该元件符号
(4)编译
(5)波形仿真(不需引脚绑定)
2、计数器实现及仿真
(1)设计计数器Counter元件。

通过.v文件构建元件符号Counter,生成计数器。

(2)进行波形仿真
(3)进行引脚绑定,下载到实验箱进行验证。

3、ALU+计数器综合实现及仿真
(1)设计计数器Counter元件。

通过.v文件构建元件符号Counter,生成计数器(2)设计ALU元件。

通过.v文件构建元件符号ALU181
(3)计数器产生的信号S[3..0]作为ALU中S[3..0]的输入信号。

实验中程序运行结果及截图
实验心得
通过这次实验的学习。

我们了解到了ALU和计数器的基本原理,通过自己动手实验,进一步了解了其基本结构在实际实验中是怎样发挥作用的。

在实验的过程中,我和小组成员互相配合,共同摸索,虽然几经失败,但是最后在老师的帮助下发现了错误,并且加以改正,最后成功做出了实验,完成了一个简单的ALU+计数器。

在此过程中,增强了动手能力,加深了理解,增进了友谊,是一次不可多得的宝贵的实验经历。

60进制计数器

60进制计数器

题目60计数器60进制计数器主要内容:利用QuartusII设计一个六十进制计数器。

该电路是采用整体置数法接成的六十进制计数器。

首先需要两片74160接成一百进制的计数器,然后将电路的60状态译码产生LD′=0信号,同时加到两片74160上,在下一个计数脉冲(第60个计数脉冲)到达时,从而得到六十进制计数器。

主要要求如下:(1)每隔1个周期脉冲,计数器增1;(2)当计数器递增到60时,进位端波形发生跳变,说明计数器产生进位信号,之后计数器会自动返回到00并重新计数;(3)本设计主要设备是两片74160同步十进制计数器,时钟信号通过建立波形文件得以提供。

1方案选择与电路原理图的设计使用具有一定频率的时钟信号作为计数器的时钟脉冲作为同步控制信号,整体电路通过两片74160与其他门电路辅助等单元电路构成以实现置数进位功能。

图2.1为六十进制计数器的总体电路原理框图。

图1.1 电路原理框图1.1单元电路一:十进制计数器电路(个位)本电路采用74160作为十进制计数器,它是一个具有异步清零、同步置数、可以保持状态不变的十进制上升沿计数器。

每输入10个计数脉冲,计数器便工作一个循环,并且在进位端RCO产生一个进位输出信号。

其功能表如表2-1所示,连接方式如图2.2所示。

此片工作时进位端RCO在没有进位时RCO=0,因此第二片ENP·ENT=0,第二片不工作。

表2-1 同步十进制计数器功能表在新建好的block文件的图形编辑窗口中双击鼠标,或点击图中“符号工具”按钮,或者选择菜单Edit下的Insert Symbol命令,即可对元件进行选择。

选择元件库中的ot hers—maxplus2—74160。

点击工具栏中Orthogonal Node Tool按钮便可以对端子间进行连线,其中值得注意的是,点击工具栏中Orthogonal Bus Tool按钮可以通过总线进行连接。

1.2 单元电路二:十进制计数器(十位)本电路同样采用74160作为十进制计数器,如图2.3所示。

verilog模六十计数器设计

verilog模六十计数器设计
end
endmodule
子模块 1:
module frequency1000( input cp, output reg cp1
); reg [15:0]cnt=0; always@(posedge cp) begin cnt<=cnt+1'b1; if(cnt>=16'b1100001101001111)//50000-1,把 50MHz 分频为 1000Hz begin cp1<=~cp1;
性能测试: 用电子表测量系统从 00 显示到 59,再到 00 的时间,确实为 30 秒(计数信号为 2Hz), 性能上达到要求。
七、 系统设计开发步骤与过程
1、 明确设计要求与拥有的资源; 2、 设计原理图; 3、 编写代码; 4、 仿真; 5、 修改代码后,重复步骤 4、5,直到仿真结果无误为止; 6、 将代码写入开发板,进行性能与功能测试; 7、 修改代码后,重复步骤 4、5、6、7,直到性能与功能都达到要求为止; 8、 撰写系统说明书与报告。
); reg [24:0]cnt=0; always@(posedge cp) begin cnt<=cnt+1'b1; if(cnt>=25'b1011111010111100000111111)//25000000-1,把 50MHz 分
频为 2Hz begin cp0<=~cp0; cnt<={25{1'b0}}; end
endmodule
子模块 3:
module cnt6( input tc, input cr, output reg [3:0]q6=0 ); always@(posedge tc or negedge cr) begin if(~cr) q6<=4'b0000; else if(q6>=4'b0101) q6<=4'b0000;

设计方案60进制计数器数电课程设计方案

设计方案60进制计数器数电课程设计方案

电子技术基础实验课程设计用74LS161设计六十进制计数器学院:班级:姓名:学号:电气工程学院电自1418刘科28用74LS161设计六十进制计数器摘要计数器是一个用以实现计数功能的时序部件,它不仅可用来及脉冲数,还常用作数子系统的定时、分频和执行数字运算以及其它特定的逻辑功能。

目前,无论是TTL还是CMOS 集成电路,都有品种较齐全的中规模集成计数器。

使用者只要借助于器件手册提供的功能和工作波形图以及引出端的排列,就能正确运用这些器件。

计数器在现代社会中用途中十分广泛,在工业生产、各种和记数有关电子产品。

如定时器,报警器、时钟电路中都有广泛用途。

在配合各种显示器件的情况下实现实时监控,扩展更多功能。

利用两片74LS161分别作为六十进制计数器的高位和低位,分别与数码管连接。

把其中的一个通过一个与门器件构成一个十进制计数器,另一个芯片构成六进制计数器。

十进制计数器(个位)和六进制计数器(十位)均采用反馈清零法利用两个74LS161构成。

当个位计数器从1001计数到0000时,十位计数器要计数一次,可通过两芯片之间级联实现。

使用200HZ时钟信号作为计数器的时钟脉冲。

根据设计基理可知,计数器初值为00,按递增方式计数,增到59时,再自动返回到00。

关键字:60进制,计数器,74LS161,级联目录第1章概述 (1)1.1 计数器设计目的 (1)1.2 计数器设计组成 (1)第2章六十进制计数器设计描述 (2)2.1 74LS161的功能 (2)2.2 方案框架 (3)第3章六十进制计数器的设计与仿真 (4)3.1 基本电路分析设计 (4)3.2 计数器电路的仿真 (6)第4章总结 (8)第1章概述计数器是一个用以实现计数功能的时序部件,它不仅可用来及脉冲数,还常用作数子系统的定时、分频和执行数字运算以及其它特定的逻辑功能。

计数器种类很多。

按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。

用VHDL编写60进制计数器

用VHDL编写60进制计数器

1.用VHDL设计60进计数器。

设计一个BCD码60进计数器。

要求实现同步,异步两种情况,且规定个位显示0~9,十位显示0~5,均用4位二进制数表示。

用VHDL语言描述中小规模集成电路74LS169。

VHDL的源程序如下:(1):同步,文件名为bcd60countLIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity bcd60count isport(clk,bcd1wr,bcd10wr,cin: in std_logic;co: out std_logic;datain: in std_logic_vector(3 downto 0);bcd1p: out std_logic_vector(3 downto 0);bcd10p: out std_logic_vector(2 downto 0));end bcd60count;architecture behave of bcd60count issignal bcd1n: std_logic_vector(3 downto 0);signal bcd10n: std_logic_vector(2 downto 0);beginbcd1p<=bcd1n;bcd10p<=bcd10n;kk1: process(clk,bcd1wr)beginif (bcd1wr='1') thenbcd1n<=datain;elsif(clk'event and clk='1') thenif (cin='1') thenif(bcd1n="1001" ) thenbcd1n<="0000";elsebcd1n<=bcd1n+'1';end if;end if;end if;end process kk1;kk2: process(clk,bcd10wr)beginif (bcd10wr='1') thenbcd10n<=datain(2 downto 0);elsif(clk'event and clk='1') thenif(cin='1') and (bcd1n="1001") thenif(bcd10n="101") thenbcd10n<="000";elsebcd10n<=bcd10n+'1';end if;end if;end if;end process kk2;kk3: process(bcd10n,bcd1n,cin)beginif(cin='1' and bcd1n="1001" and bcd10n="101") thenco<='1';elseco<='0';end if;end process kk3;end behave;(2)异步程序如下:LIBRARY ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity cou60 isport(clk,reset,cin : in std_logic;co : out std_logic;bcd1p : out std_logic_vector(3 downto 0);bcd10p : out std_logic_vector(2 downto 0)); end cou60;architecture behave of cou60 issignal bcd1n: std_logic_vector(3 downto 0);signal bcd10n: std_logic_vector(2 downto 0);beginbcd1p<=bcd1n;bcd10p<=bcd10n;kk1: process(clk)beginif(clk'event and clk='1') thenif (reset='0') thenbcd1n<="0000";elsif (cin='1') thenif(bcd1n="1001" ) thenbcd1n<="0000";elsebcd1n<=bcd1n+'1';end if;end if;end if;end process kk1;kk2: process(clk)beginif(clk'event and clk='1') thenif (reset='0') thenbcd10n<="101";elsif(cin='1') and (bcd1n="1001") thenif(bcd10n="001") thenbcd10n<="101";elsebcd10n<=bcd10n+'1';end if;end if;end if;end process kk2;kk3: process(bcd10n,bcd1n,cin)beginif(cin='1' and bcd1n="1001" and bcd10n="001") thenco<='1';elseco<='0';end if;end process kk3;end behave;。

verilog实现60计数器

verilog实现60计数器
module count60(qout,cout,data,load,reset,clk);
input load,clk,reset;input[7:0] data;
output reg[7:0] qout; output cout;
always @(posedge clk)
begin
if(reset) qout<=0;
count60 mycount(qout,cout,data,load,reset,clk);
always #(DELY/2) clk=~clk;
initial
begin clk=0;reset=0 ;load=0 ;data=58;
#DELY reset=1;
#DELY reset=0;
#DELY load=1;
end
end
assign cout=(qout==8'd59)?1:0;
endmodule
`include "count60.v"
module count;
reg clk,reset,load;
reg[7:0] data;
wire [7:0]qout;
wire cout;
parameter DELY=100;
verilog实现60计数器 modulecount60(qout,cout,data,load,reset,clk); input load,clk,reset;input[7:0] data; output reg[7:0] qout; output cout; always @(posedge clk) begin if(reset) qout<=0; else if(load) qout<=data; else begin if(qout[3:0]==9) begin qout[3:0]<=0; if(qout[7:4]==5) qout[7:4]<=0; else qout[7:4]<=qout[7:4]+1; end else qout[3:0]<=qout[3:0]+1; end end assign cout=(qout==8?d59)?1:0; endmodule `include "count60.v" module count; reg clk,reset,load; reg[7:0] data; wire [7:0]qout; wire cout; parameter dely=100; count60 mycount(qout,cout,data,load,reset,clk); always #(dely/2) clk=~clk; initial begin clk=0;reset=0 ;load=0 ;data=58; #dely reset=1; #dely reset=0; #dely load=1; #dely load=0; #(dely*60) $finish; end initial $monitor($time,,,"clk=%d reset=%d load=%d qout=%d cout=%d clk,reset,load,cout,qout);endmodule `timescale 1ns/1ns `include "vote.v" module vote; reg wirepass; parameter dely=100; vote vt(a,b,c,pass); initial begin #dely$finish; end initial $monitor($time,,,"a=%b pass=%b",a,b,c,pass);endmodule crx110

60进制计数器设计

60进制计数器设计

级联。

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时钟信号作为计数器的时钟脉冲。

数电仿真报告 用VHDL语言设计一个六十进制计数器

数电仿真报告  用VHDL语言设计一个六十进制计数器

数电实验设计报告题目: 用VHDL语言设计一个六十进制计数器学院:电子与信息工程学院专业: 10级通信工程(2)班学号:xxx姓名: xx指导老师:xxx2012年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 isbeginCout<='1' when(qh="0101" and ql="1001" and en='1')else'0';--计数到59时产生进位信号process(clk,clear) --有clk及clear变化即触发进程beginif(clear='0')then --有清零信号即清零qh<="0000";ql<="0000";elsif(clk'event and clk='1')then --有时钟信号时开始计数if(en='1')thenif(ql=9)thenql<="0000"; --ql到9时清零if(qh=5)thenqh<="0000"; --qh到5时清零elseqh<=qh+1; --未到5时累加1 end if;elseql<=ql+1; --未到9时累加1end if;end if;end if;end process;end behave;四、设计过程步骤1:输入设计项目和存盘打开 MAX+plusII,选择菜单“File”_“New…”,出现如图1所示的对话框,在框中选中“Text Editor file”,按“OK”按钮,即选中了文本编辑方式。

60进制计数器错误原因与修改方法

60进制计数器错误原因与修改方法

60进制计数器错误原因与修改方法杨艳;李继凯【摘要】在实际应用中常采用集成4位二进制计数器74LS161构成60进制计数器。

对现有教材中的一道例题采用Multisim仿真并观察结果,发现其实构成的是50进制计数器。

结合74LS161的逻辑功能表,分析了用74LS161构成60进制计数器时出现错误计数循环的原因,给出了两种修改电路设计的方法,并利用仿真实验进行验证。

结果表明设计方法是正确的。

%A 4-bit integrated binary counter 74LS161 is often used to compose a modulo -60 counter in practical application ,A circuit from the existing textbook example is simulated with Multisim .The results show the circuit is a modulo -50 counter in fact .The reasons for wrong count cycle in using 74LS161 to compose modulo-60 counter is analyzed ,based on the logic function table of 74LS161 .Two Modifi-cation methods is given and verified with simulation experiment .【期刊名称】《广东石油化工学院学报》【年(卷),期】2015(000)004【总页数】4页(P63-66)【关键词】集成计数器;60进制;Multisim【作者】杨艳;李继凯【作者单位】广东石油化工学院计算机与电子信息学院,广东茂名525000;广东石油化工学院计算机与电子信息学院,广东茂名525000【正文语种】中文【中图分类】TN79从降低成本方面考虑,集成电路的定型产品必须有足够大的批量,因此,目前常见的计数器芯片在计数进制上只做成应用较广的类型,如十进制和十六进制[1]。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档