精华内容
下载资源
问答
  • 二进制计数器verilog
    千次阅读
    2020-01-11 12:58:17

    ##tb.v (tb)

    `timescale 1ns/100ps	
    module tb;          
      reg  clk, rst;   
      wire [7:0] dout;
      initial begin
      	             clk = 1'b0;
          forever #5 clk = ~clk;	
      end
      initial begin								 
      	             rst = 1'b1;  
      	       #1    rst = 1'b0;
      	       #2.5  rst = 1'b1;
      	    // #340.9  rst = 1'b0; 验证复位信号作用
      	    // #0.1    rst = 1'b1;
    
           end   
    CNT10  U_CNT10
        (  .clk       (clk  ),
           .rst       (rst  ),
           .dout      (dout )      );
        											
    endmodule												
    

    ##test.do (sim)

    
    # step 1
    vlib work
    
    # step 2
    vlog ../rtl/cnt10.v
    vlog ../tb/tb.v
    
    #step 3
    vsim tb
    add wave -position insertpoint  \
    sim:/tb/clk \
    sim:/tb/rst \
    sim:/tb/dout
    run 2us
    

    ##cnt10.v(rtl)

    module CNT10 (clk, rst,dout );//二位十进制计数器0~99
     input clk,rst;
     output reg [7:0]dout;
     reg q3;
     reg  [3:0] q1;//低位
     reg  [3:0] q2;//高位
     always @ ( * )
          begin dout<={q2,q1} ; end  //触发器使用非阻塞型赋值<=,其他的全用阻塞性赋值语句=
     always @ (posedge clk or negedge rst )
              begin 
              	     if (!rst) q1<=4'b0000;
              	else if (q1<9) q1<=q1+1;  
              	else           q1<=4'b0000;
              end 
     always @ ( posedge clk or negedge rst or posedge q1 ) //触发器敏感列表全为边沿信号,阻塞性赋值才能有*代替
              begin 
              	     if ( !rst ) q3<=1'b0;
              	else if ( q1<9 ) q3<=1'b0;
              	else q3<=1'b1;
              end 
    always @ (posedge clk or negedge rst)
              begin 
              	     if ( !rst ) q2<=4'b0000;
              	else if ( q2<9 )
              	               begin 
              	                     case (q3)
              	                     	     1'b1: q2<=q2+1;
              	                     	     default q2<=q2;
              	                     endcase
              	               end
              	   else  
              	        begin
              	   	           if (q1<9) q2<=q2;
              	   	           else q2<=4'b0000;
              	   	    end 
              end
    endmodule           	      
    
    更多相关内容
  • 二进制计数器_verilog_

    2021-10-03 04:30:29
    一个简单的二进制计数器,但将其拆分为数据通路和状态机,便于理解学习
  • 一、实验目的1、学习用集成触发器构成计数器的方法2、掌握中规模集成计数器的使用及功能测试方法3、运用集成计数计构成1/N分频器二、实验原理计数器是一个用以实现计数功能的时序...根据计数制的不同,分为二进制计...
    一、实验目的 1、学习用集成触发器构成计数器的方法 2、掌握中规模集成计数器的使用及功能测试方法 3、运用集成计数计构成1/N分频器 二、实验原理

    计数器是一个用以实现计数功能的时序部件,它不仅可用来计脉冲数,还常用作数字系统的定时、分频和执行数字运算以及其它特定的逻辑功能。

    计数器种类很多。按构成计数器中的各触发器是否使用一个时钟脉冲源来分,有同步计数器和异步计数器。根据计数制的不同,分为二进制计数器,十进制计数器和任意进制计数器。根据计数的增减趋势,又分为加法、减法和可逆计数器。还有可预置数和可编程序功能计数器等等。目前,无论是TTL还是CMOS集成电路,都有品种较齐全的中规模集成计数器。使用者只要借助于器件手册提供的功能表和工作波形图以及引出端的排列,就能正确地运用这些器件。

    1、用D触发器构成异步二进制加/减计数器

    下图是用四只D触发器构成的四位二进制异步加法计数器,它的连接特点是将每只D触发器接成T'触发器,再由低位触发器的adacab503131e83a84e0d75ef7a11826.png端和高一位的CP端相连接。

    9ab597ecd12006a9e3696904096e8bac.png

    若将上图稍加改动,即将低位触发器的Q端与高一位的CP端相连接,即构成了一个4位二进制减法计数器。

    2、中规模十进制计数器

    CC40192或74LS192是同步十进制可逆计数器,具有双时钟输入,并具有清除和置数等功能,其引脚排列及逻辑符号如下图所示。

    b7e27a4f7557d344749b07a3572cf50e.png

    87d827fb66c19bdb4874ccd50bbae5b9.png

    fbfe72b9fe163744f025e65f65cd6789.png

    545e0cba96179bdb0e75bab72927821d.png

    ae29e436646bcf7e7ce5d280370bbb8c.png

    74LS192同步十进制可逆计数器逻辑功能总结:

    9b2d29b5e1fd5750c4f5adace4a98d19.png

    3、计数器的级联使用

    一个十进制计数器只能表示0~9十个数,为了扩大计数器范围,常用多个十进制计数器级联使用。

    同步计数器往往设有进位(或借位)输出端,故可选用其进位(或借位)输出信号驱动下一级计数器。 下图是由CC40192利用进位输出控制高一位的CPU端构成的加数级联图。用两个CC40192计数器可以构成100进制计数器。

    58ed27495c0d6c6b3ef1f9a18c694cb2.png

    4、实现任意进制计数

    (1)用复位法获得任意进制计数器

    假定已有N进制计数器,而需要得到一个M进制计数器时,只要M<N,用复位法使计数器计数到M时置“0”,即获得M进制计数器。

    (2)利用预置功能获M进制计数器

    用三个CC40192可组成421进制计数器。

    外加的由与非门构成的锁存器可以克服器件计数速度的离散性,保证在反馈置“0”信号作用下计数器可靠置“0”。

    三、实验设备与器件 1、 +5V直流电源  2、 双踪示波器 3、 连续脉冲源  4、 单次脉冲源 5、 逻辑电平开关 6、 逻辑电平显示器 7、 译码显示器 8、 CC4013×2(74LS74)       CC40192×3(74LS192)       CC4011(74LS00)

          CC4012(74LS20)

    b3f8bfcbce854b5544c36ce66b24a567.png

    四、实验内容

    1、用74LS74 D触发器构成4位二进制异步加法计数器。

    155e72a28db36f4393179421fb97e1f8.png

    6ba8a4303132831e5ff55d053471b9ad.png

    实验步骤-连接电路后,按单次脉冲源,观察输出端状态变化。

    583cd91663a8c3e197d19425f2f1b80e.png

    4位二进制异步加法计数器状态表:

    640a0d140e8045048ee042e77514eb56.png

    将图电路中的低位触发器的Q端与高一位的CP端相连接,构成减法计数器,按实验内容2)、3)进行实验,观察并列表记录Q3~Q0的状态。(选做) 2. CC40192或74LS192构成十进制加法计数电路图(选做)

    55956edfe69dda523d5271c57a26d8d2.png

    (减计数时CPU接高CPD接脉冲)

    3、用两片CC40192或74LS192组成两位十进制加法计数器

       按图连接电路,输入计数脉冲,进行由00—99累加计数,记录之。

    166094c980322d0fb344f27712bca41e.png

    实验步骤-连接电路后,按单次脉冲源,观察输出端状态变化。

    42983a74913ce30587277518a58c44f8.png

    48390498f116aa699e72ac260de3377d.png

    4、将两位十进制加法计数器改为两位十进制减法计数器,实现由99—00递减计数,记录之。(选做)

    5、设计一个数字钟移位60进制计数器并进行实验。(选做)

    五、实验报告及总结要求

    1、画出实验线路图,记录、整理实验现象及实验所得的有关波形。对实验结果进行分析。

    2、总结使用集成计数器的体会。

    展开全文
  • 10进制计数器Verilog编程

    万次阅读 多人点赞 2019-09-27 10:37:36
    计数器不仅能用于对时钟脉冲计数,还可以用于分频,定时,产生节拍脉冲序列以及进行数字运算等,...1.同步四位二进制加法计数器: 各触发器的驱动方程: T0 = 1; T1 = Q0 T2 = Q0Q1 T3 = Q0Q1Q2 2.四位10进制...

    计数器不仅能用于对时钟脉冲计数,还可以用于分频,定时,产生节拍脉冲序列以及进行数字运算等,分为同步计数器和异步计数器,在同步计数器中,当时钟脉冲的输入时,触发器的翻转是同时发生的。而在异步计数中,触发器的翻转有先有后,不是同时发生的。

    1.同步四位二进制加法计数器:

    各触发器的驱动方程:

    T0 = 1;

    T1 = Q0

    T2 = Q0Q1

    T3 = Q0Q1Q2

    2.四位10进制的计数器

    在四位二进制计数器的基础上修改,当计算到1001时,则下一个clk状态回到0000

    驱动方程:

    T0 = 1;

    T1 = Q0Q3`

    T2 = Q0Q1

    T3 = Q0Q1Q2 + Q0Q3`

    其verilog编程比较简单:用一个always块即可实现:

    `timescale 1ns/10ps
    module counter10(clk,rst,count);
    input clk,rst;
    output [3:0] count;
    reg [3:0] q;
    assign count = q;
    
    always@(posedge clk)
    begin
      if(!rst)
        q <= 0;
      else if(q >= 4'd9)
        q <= 0;
      else
        q <= q + 1;
    end
    endmodule
    

    编写一个testbench

    module counter10_tb();
    
    reg rst;
    reg clk;
    wire [3:0] count;
    
    counter10 wt(.clk(clk),.rst(rst), .count(count));
    
    initial 
    begin
      rst <= 0;
      clk <= 0;
      #50 rst <= 1;
      #2000 rst <= 0;
    end
    always
      #10 clk = ~clk;
    endmodule
    

    通过vcs仿真:vcs add10 -R -gui +v2k

    得到的波形:

    展开全文
  • 设计带符号位的 8 位加法器电路,每个加数的最高位为符号位,符号位‘1’ 表示-,符号位‘0’表示+
  • 使用Verilog这种硬件描述语言,用软件ModelSim及Quartus II,在FPGA完成二进制计数器
  • 同步集成电路计数器 || 74161 74163 74160 || 同步级联 异步级联 ||...1. 4位同步二进制计数器7416174161的功能有4个:异步清零同步置数保持同步计数其逻辑图和功能表如下图所示,(CLR非)是异步清零端(LD非)是同步置...

    同步集成电路计数器 || 74161 74163 74160 || 同步级联 异步级联 || 数电

    b691e4b97fdb87aff0494f86c22a0b0f.png

    1c8cf759ecbde54aa7668533a6e8510e.png

    TTL器件和CMOS器件的工作电压和输入输出接口参数会有差别。

    上面图中,各式76161虽然型号不同,但是逻辑功能都是相同的,后面统称74161。

    1. 4位同步二进制计数器74161

    74161的功能有4个:

    • 异步清零
    • 同步置数
    • 保持
    • 同步计数

    6620647b9c6f3ecdd410efa5513f882f.png

    其逻辑图和功能表如下图所示,

    • (CLR非)是异步清零端
    • (LD非)是同步置数控制端
    • ENT和ENP是计数控制端
    • CLK用作时钟信号输入端
    • D0D1D2D3用作4位预置数据输入
    • Q0Q1Q2Q3表示四位计数器的状态
    • RCO为计数器进位输出端

    逻辑符号内部有一些标识符,他们有特定的含义。

    例如,和异步清零端(CLR非)对应的内部标识符为CT=0,其中CT是英文counter的缩写。这个标识符表示,在这个输入端施加有效电平,将使计数器清零,也就是使状态Q3Q2Q1Q0变成0000。我们可以看到,这个输入端标有一个三角符号,它表示这个输入端的有效电平是低电平。也就是说,(CLR非)为低电平0时,计数器将清零。

    再一例,和输出端RCO对应的标识符为3CT=15,其中CT=15表示当计数器的状态Q3Q2Q1Q0=1111,即十进制数15时,RCO将变成高电平1。其中3表示RCO的输出逻辑电平受其它带有数字3的标识符所对应的输入端信号的影响。我们可以找到,代表舒服带有数字3的标识符为G3,对应输入端ENT,表明计数控制端ENT对进位输出RCO有影响。

    此外,为了画图方便,我们经常使用右边所示的逻辑符号传统画法。

    83f67ca61d0480f7860ae9f755e80a86.png

    0395450531b203f78417aad4fb803d7f.png

    2. 4位同步二进制计数器74163

    74163的逻辑符号与功能分别如图所示和如表所示。

    乍一看,好像和刚刚介绍过的74161没什么区别。

    他们确实非常相像,差别在于逻辑符号左边的第一个输入信号。也就是(CLR非的清零方式)。

    异步清零端(CLR非)对应的内部标识符为5CT=0而不是CT=0。

    根据之前的介绍,由于带数字5的是C5,其对应的输入引脚是时钟CLK,因此我们会想到74163的清零信号必然受到时钟CLK的影响。

    从74163功能表的第一行我们可以发现,低电平有效的清零信号(CLR非)必须由时钟CLK的上升沿触发,才能起到清零左作用。因此我们把这种清零方式称为同步清零。

    至此,我们可以说74163和74161的唯一差别在于清零方式。

    74161采用异步清零,而74163采用同步清零,其它的工作过程是相同的。

    在数字集成电路中,大部分的触发器、计数器和后面要学习的寄存器、移位寄存器大都采用异步清零的方式。

    42cb35a57dd84b7fbd71ec1d52953ce7.png

    3. 十进制同步计数器74160

    和前面学过的4位二进制计数器74161相比,74160工作模式是一样的。

    • 异步清零
    • 同步置数
    • 保持
    • 同步计数

    唯一的差别是计数的状态转换图不同。

    3c2de2811c1b84e1923576676c50da2b.png

    下图是74160的逻辑符号、简化符号和功能表。

    输出端RCO对应的标识符为3CT=9,其中CT=9表示当计数器的状态Q3Q2Q1Q0=101,即十进制数9时,RCO将变成高电平1。

    a55e1ded4eb37c00ab0ed6a44517f38f.png

    下面我们看到的是74160的状态转换图,由于下面的10个状态和8421BCD码是一一对应的,因此74160也被称为8421BCD码计数器。

    56601ac63d126ec51c136288590cce36.png

    d058726accf0341c0df73f25b39c4ab3.png

    2. 计数器的级联

    9665fce8eea20284344b8e603b6d2617.png

    2.1 异步级联

    7fa28a012073d5ba82236aec9ad9fff0.png

    异步级联会导致工作频率的下降。

    b4cf330366ec057d939ff5d30a4e2c8d.png

    2.2 同步级联

    下图接法被称作同步级联,因为两片74160的时钟输入端被连接到了一起,它们可以在统一的时钟脉冲下同步地工作。

    同步级联利用ENT和ENP端来实现。

    1a26d881f74bde8ecbfe50f3a6c61d90.png

    下图介绍工作原理。

    计数器(1)的计数控制端ENT=1、ENP=1,因此计数器(1)工作在同步计数模式,也就是在时钟信号CLK作用下进行加法计数。

    而计数器(2)的计数控制端ENT和ENP受控于计数器(1)的进位输出端RCO(1),因此计数器(2)能否工作在计数模式,取决于RCO(1)的电平。当RCO(1)=1时,计数器(2)工作在同步计数模式,也就是在时钟信号CLK作用下进行加法计数;当RCO(1)=0时,计数器(2)工作在保持模式,即不管有无时钟脉冲,计数器(2)保持状态不变。

    6255c0fd049becee451fe41ed1017801.png

    计数器配合BCD译码器可以通过数码管显示出计数状态。

    c99a14699dc4f9649fc9e57e4c528b20.png

    f6dca622604eaa5d4f863281295b261d.png

    33c78b17be1d6d6639bf515ea733f491.png

    由于同步级联计数器的性能优于异步级联,因此推荐使用同步级联的方法。

    丢题目,

    a0094e65f39cfef1e0ec3ea5bfcbc6a1.png

    视频:MOOC-数字逻辑电路-第9单元 时序逻辑功能-同步集成电路计数器

    展开全文
  • verilog十二进制计数器

    千次阅读 2021-11-21 15:22:59
    rst),同步使能(en)功能的十二进制计数器,计数结果显示 在 DP8 数码管上,进位标志在 led8 灯显示。 具体设计要求: 1)以 1HZ 为计数脉冲,计数值显示在数码管 DP8 上,进位标志位 led8。 2)rst:0 ...
  • 初学者,文件过程:先设计一位的加法计数,再一个个进位达成八位二进制加法,若要改成十进制的只需要修改加法部分语言将二进制改成十进制即可
  • verilog实现一个4bit二进制计数器。 ==== a) 异步复位 b) 同步复位 input clk, rst_n; output [3:0] o_cnt; ```verilog `timescale...
  • 4、设计实现四位二进制减法计数器(缺0000 0001 0010) 工作计划与进度安排: 第一周 熟悉Multisim环境及QuartusⅡ环境,练习数字系统设计方法, 包括采用触发器设计和超高速硬件描述语言设计,体会自上而 下、...
  • 十进制计数器与4位二进制计数器有些相似,但4位二进制计数器需要计数到1111然后 才能返回到0000,而十进制计数器要求计数到1001 (相当于9)就返回0000。8421BCD码 十进制计数器是一种最常用的十进制计数器。8421BCD码...
  • 十四进制计数器

    2015-10-30 22:00:57
    使用Quartus ii 软件编写的十四进制计数器,所使用的语言为Verilog.
  • 任意进制计数器 || 反馈复位法 反馈置数法 || 超级重点 || 数电前面介绍了4位二进制计数器和十进制计数器,但它们的计数长度、计数方式是固定的。例如:十进制计数器74160,其计数的模为10,计数方式为加1计数,从...
  • 本文阐述在FPGA开发中,使用VHDL语言,应用Quartus设计一个上升沿触发,异步清零的4位二进制计数器
  • Verilog 学习使用 24译码器、编码器、奇偶效验电路、八位数值比较器、加法器、D锁存器、四位二进制计数器、通用四位移位寄存器
  • 成 绩 评 定 表学生姓名XXX班级学号专 业通信工程课程设计题目四位二进制计数器评语组长签字:成绩日期 20 年 月 日课程设计任务书 1沈阳理工大学学 院信息科学与技术专 业通信工程学生姓名XXX班级学号课程设计题目...
  • verilog实现十进制计数器
  • 数字电路实验(05)二进制计数器设计

    千次阅读 2021-01-31 16:58:22
    数字电路实验(05)二进制计数器设计 2020-5-29 一.实验要求 1.1.实验目的 认识二进制同步计数器的定义、工作状态及信号波形; 熟悉基于JK触发器实现二进制同步计数器的构成规则。 1.2.实验器材 VCC Ground 脉冲...
  • 10进制计数器

    2014-06-01 19:14:34
    10进制计数器
  • Verilog HDL】24进制计数器

    千次阅读 2020-12-20 18:58:28
    文章目录24进制计数器设计要求【 1. 源代码 】顶层文件1. 分频器模块2. 控制模块3. 个位计数器模块4. 十位计数器模块5. 数码管模块【 2. 仿真图 】 24进制计数器设计要求 将4HZ信号分频得到的1HZ时钟信号作为计数...
  • Verilog数字系统设计五 ...提示:以下是本篇文章正文内容,编程实现10进制计数器,具有异步复位功能,十位和个位用8421BCD码表示 一、4选1多路选择器是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决
  • 计数器verilog

    2022-07-27 10:00:22
    各种计数器verilog代码实现
  • 基于Verilog语言的13进制计数器设计

    千次阅读 2019-11-25 23:12:47
    基于Verilog语言的13进制计数器设计 `timescale 1ns / 1ps ////////////////////////////////////////////////////////////////////////////////// // Company: // Engineer: // // Create Date: 2019/11/10 15:...
  • 对quartus算是头一次具体接触吧,才...这个十二进制计数器咨询了师兄,不然自己真的很难写出来,这么多编程语言每一种用法都不一样,也是醉了,不扯了,上图吧 下面这个是进制的,这个还好把12改成20就可以了
  • Verilog HDLBits--Count Clock (Complement)这篇文章延续上一篇HDLBits--(Verilog在线学习)--"105: Count Clock"。继常规 one-digit BCD编码,各位(如分钟的个位、十位等)分开单独显示 方法后,笔者提出一种十进制...
  • 本文描述了一个一百进制的计数器,由两个十进制计数器级联而成。每个十进制计数器可以送显至一位数码管。 先例化一个十进制计数器: module counter10(rst_n,clkin,t,up_down,D,c); input rst_n,clkin,t,up_...
  • 二进制计数器及testbench,Verilog HDL

    千次阅读 2013-07-19 14:59:43
    写的很详细,也很全面,特别是testbench: http://www.cnblogs.com/yuphone/archive/2010/12/10/1902664.html
  • verilog 四位二进制全加器和半加器

    千次阅读 2021-12-13 15:00:28
    1 全加器 module add4 ( input[3:0] a,b, output[3:0] sum, output cout, input cin ); assign{cout,sum} = a+b+cin; endmodule 2半加器 module add4 ( input[3:0] a,b, output[3:0] sum, ...endmodule

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,863
精华内容 745
关键字:

二进制计数器verilog

友情链接: SVM13.rar