精华内容
下载资源
问答
  • 在之前对于同步计数器的... 我们通过同步十进制加法计数器和同步六进制加法计数器的有机组合来看一下这其中的奥妙. 对于同步十进制加法计数器的设计, 我们都知道在1001->0000时, Y由0->1: 那么问题来了, 究...

            在之前对于同步计数器的设计中, 我从未验证过输出Y对于下一位(较高位)计数器的影响. 之前对于计数器的输出Y值的设定就有一定的疑惑, 今日终于有了更进一步的理解. 我们通过同步十进制加法计数器和同步六进制加法计数器的有机组合来看一下这其中的奥妙.

            对于同步十进制加法计数器的设计, 我们都知道在1001->0000时, Y由0->1: 那么问题来了, 究竟是电路状态为1001时Y=1还是电路状态为0000时Y=1呢——我的课本上告诉我是1001. 可真正将该结论应用到实际中时, 我发现, 这是错误的: 若按书上的思路来, 电路状态来到08后, 会变到19, 而后再变为10(这很显然是不对的); 电路状态在18、28、38、48、58时都会面临这一问题. 

            根据出现的问题, 我将同步十进制加法计数器部分的输出Y改为Y=Q3n'Q2n'Q1n'Q0n', 再模拟电路波形后发现, 上述问题已不存在. 吸取了这一教训后, 我又将同步六进制加法计数器部分的输出Y改为Y=Q2n'Q1n'Q0n'. 

            当然, 我也只是用multisim7模拟了电路的运行情况, 并不是真正意义上的运行, 所以我的结论有可能不完全正确, 还请各位朋友帮我分析这一问题, 在这向提供宝贵意见的朋友们表示衷心的感谢!

            最后, 我们来看一下该如何有机组合这两个电路. 

            (1)准备好统一使用上升沿触发的D触发器构成的同步十进制加法计数电路,

            (2)准备好统一使用上升沿触发的D触发器构成的同步六进制加法计数电路,

            (3)将信号发生器的输出端接到每个同步十进制加法计数电路中的D触发器的CLK端,

            (4)将同步十进制加法计数电路的输出Y接到每个同步六进制加法计数电路中的D触发器的CLK端,

            (5)用两个4输入数码管, 实时显示两个电路的状态.

            由于电路版图过大, 下面只展示电路图的缩略版本, 若想获取更加详细的电路图, 可从本博客的资源中找到该电路的详细设计过程及电路逻辑图.

    展开全文
  • Verilog设计十进制加法器(FPGA)

    千次阅读 2018-04-25 17:51:12
    本文提供了一个同步清零、同步置数的十进制加法计数器代码和一个异步清零、异步置数的可逆十进制计数器代码,且使用ISE13.4综合通过并在Basys2开发板上成功验证功能,此外大家可以修改代码以调节周期。同步清零、...

    本文提供了一个同步清零、同步置数的十进制加法计数器代码和一个异步清零、异步置数的可逆十进制计数器代码,且使用ISE13.4综合通过并在Basys2开发板上成功验证功能,此外大家可以修改代码以调节周期。

    同步清零、同步置数的十进制加法计数器代码:

    module add_1(
       input clk,//50MHz,20ns
    	input sw0,//清零
    	input sw1,//置数
    	input [3:0] data,
    	output reg [3:0] led
        );
    
      reg [25:0] mclk;
      reg q;//1Hz时钟
      
      initial mclk=26'b0;
      initial q=0;
      
      always@(posedge clk)
      begin
        if(mclk==25000000)
    	   begin
    		mclk<=0;
    		q=!q;
    		end
    	 else
    	   begin
    		mclk<=mclk+1;
    		end
       end
    	
    	always@(posedge q)
    	begin
    	if(sw0==1)
    	  begin
    	  led<=0;
    	  end
    	else if(sw1==1)
    	  begin
    	  led<=data;
    	  end
    	else if(led>=9)
    	  begin
    	  led<=0;
    	  end
    	else
    	  begin
    	  led<=led+1;
    	  end
    	end	
    endmodule

    约束条件:

    NET"clk"LOC=B8;
    NET"sw0"LOC=N3;
    NET"sw1"LOC=E2;
    NET"data[0]"LOC=P11;
    NET"data[1]"LOC=L3;
    NET"data[2]"LOC=K3;
    NET"data[3]"LOC=B4;
    NET"led[0]"LOC=M5;
    NET"led[1]"LOC=M11;
    NET"led[2]"LOC=P7;
    NET"led[3]"LOC=P6;
    异步清零、异步置数的可逆十进制计数器代码下载地址:https://download.csdn.net/download/weixin_39603637/10374030


    展开全文
  • 学会十进制加法计数器设计,为复杂时序逻辑电路的设计打基础。 实验预习: 掌握十进制加法计数器的设计原理; 同步、异步电路的实现; if语句的用法。 实验讲解1: D触发器和锁存的VerilogHDL描述: module...

    目录

    实验目的:

    实验预习:

    实验讲解1:

    D触发器和锁存器的VerilogHDL描述:

    实验讲解2:

    D触发器的设计

    实验内容:十进制加法计数器设计

    实验总结


    实验目的:

    1. 熟悉QuartusⅡ软件的使用方法,掌握EDA流程;
    2. 掌握基本时序逻辑电路的设计方法;
    3. 学会十进制加法计数器设计,为复杂时序逻辑电路的设计打基础。

    实验预习:

    1. 掌握十进制加法计数器的设计原理;
    2. 同步、异步电路的实现;
    3. if语句的用法。

    实验讲解1:

    D触发器和锁存器的VerilogHDL描述:

    module D_ff(D,clk,q);    //D触发器
    input D,clk;
    output reg q;
    always@(posedge clk)
    q<=D;
    end
    endmodule
    
    module latchl(D,clk,q);    //锁存器
    input D,clk;
    output reg q;
    always@(D or clk)
    if(clk)
    q<=D;
    end
    endmodule
    
    

    锁存器与触发器的共同点:具有0 和1两个稳定状态,一旦状态确定,就能自行保持。一个锁存器/触发器能存储一位二进制码。

    锁存器与触发器的不同点:锁存器---对脉冲电平敏感的存储电路,在特定输入脉冲电平作用下改变状态。触发器---对脉冲边沿敏感的存储电路,在时钟脉冲的上升沿或下降沿的变化瞬间改变状态。

    语法点1:

    时序标志性描述posedge  clk:凡是边沿触发性质的时序元件必须使用posedge (negedge)  clk,而不用此表述产生的时序电路都是电平敏感性时序电路。其中posedge clk 表示上升沿触发,而negedge clk 表示下降沿触发。

    实验讲解2:

    D触发器的设计

    module d_ff(rst,D,clk,q);//异步
    input rst,D,clk;
    output reg q;
    always@ (posedge clk or posedge rst)
    begin 
    if(rst)
    q<=0;
    else 
    q<=D;
    end
    endmodule
    
     异步复位D触发器的仿真波形
    module d_fft(rst,D,clk,q);//同步
    input rst,D,clk;
    output reg q;
    always@ (posedge clk  )
    begin 
    if(rst)
    q<=0;
    else 
    q<=D;
    end
    endmodule
    
    同步复位D触发器的仿真波形

    语法点2:异步与同步

    异步:指独立于时钟控制的复位控制端。即在任何时刻,只要rst=1或0,触发器的输出端立刻被清0,与时钟的状态无关。

    使用的语句:

    always@(posedge clk or posedge rst)

    begin

          if(rst) q<=0;

          else  q<=D;

    end

    同步:不仅rst有效,且必须时钟上升沿到来,触发器的输出端才清0;

    使用的语句

    always@(posedge clk )

    begin

          if(rst) q<=0;

          else  q<=D;

    end

    Verilog的时钟过程描述注意要点:当敏感信号表中没有关键词posedge或negedge时,试图通过改变敏感信号的放置来改变逻辑功能是无效的。当敏感信号表中含有关键词posedge或negedge时,通过改变敏感信号的放置可以影响综合结果。

    语法点3:条件语句( if语句)

    条件语句就是根据判断条件是否成立,确定下一步的运算。if后面的条件表达式一般为逻辑表达式或关系表达式,且必须放在括号内。

    执行if语句时,首先计算表达式的值,若结果为0、x或z,按“假”处理;若结果为1,按“真”处理,并执行相应的语句。

    Verilog语言中有3种形式的if语句:

    格式1为不完整的条件语句,用于产生时序电路,如下所示:

    if (condition_expr)    true_statement;

    格式2为完整的条件语句,产生组合逻辑电路;特定情况产生时序电路,比如posedge CLK等表述的边沿敏感信号,如下所示:

    if (condition_expr)     true_statement;

    else   fault_ statement;

     格式3为多重嵌套式条件语句,可以产生比较丰富的条件描述,既可产生时序电路,也可产生组合电路。

    if (condition_expr1)         true_statement1;

    else if (condition_expr2)     true_statement2;

    else if (condition_expr3)     true_statement3;

           ……

    else default_statement;

    实验内容:十进制加法计数器设计

    实验设计要求:设计带异步复位,同步使能的十进制加法计数器。其中,RST为异步复位信号,EN为同步使能信号,CLK为时钟信号。CQ为计数输出,COUT为进位输出。

    十进制加法计数器设源程序:

    module cnt_10(rst,en,clk,q,cout);//十进制加法器
    input rst,en,clk;
    output reg[3:0] q;
    output reg cout;
    always@(posedge clk or negedge rst)
    begin
    if(~rst) begin q<=4'b0000; cout<=1'b0;end//是0就执行此行
    		else if(en)
    		if(q==4'b1001) begin q<=4'b0000;cout<=1'b1; end
    				else begin q<=q+1'b1; cout<=1'b0;end
    end
    endmodule

    语法点4:过程赋值语句(相当于VHDL中的变量赋值)

    过程赋值语句出现在initial和always块语句中,赋值符号是“=”,格式为:

                          赋值变量 = 表达式;

    在过程赋值语句中,赋值号“=”左边的赋值变量必须是reg(寄存器)型变量,其值在该语句结束即可得到。如果一个块语句中包含若干条过程赋值语句,那么这些过程赋值语句是按照语句编写的顺序由上至下一条一条地执行,前面的语句没有完成,后面的语句就不能执行,就象被阻塞了一样。因此,过程赋值语句也称为阻塞赋值语句。

    在Verilog程序的过程结构中,阻塞式赋值是一种理想化的数据传输,是立即发生的,不存在任何延时行为。

    在同一过程结构中,允许对同一目标变量多次赋值,即对于同一目标变量允许有多个驱动源。

    具有顺序赋值的特点,即过程中的阻塞式赋值语句的先后顺序位置将直接影响最后的结果或综合结果。

    语法点5:非阻塞赋值语句(相当于VHDL中的信号赋值)

    非阻塞赋值语句也是出现在initial和always块语句中,赋值符号是“<=”,格式为:

                      赋值变量 <= 表达式;

     在非阻塞赋值语句中,赋值号“<=”左边的赋值变量也必须是reg型变量,其值不象在过程赋值语句那样,语句结束时即刻得到,而在该块语句结束才可得到。

    建议:在时序逻辑电路的设计中,采用非阻塞型赋值语句。

    在Verilog程序的过程中,非阻塞赋值语句比较接近真实的电路赋值和输出,其有一个特殊的延时操作,而且在赋值过程中不影响其它同类语句的赋值操作。同阻塞式赋值一样,允许对同一目标信号多次赋值或驱动。Verilog规定,被赋值的目标变量接受最接近过程结束的那一个驱动源的数据。

    例如,在下面的块语句中包含4条赋值语句

    always       @(posedge clock)

    m = 3;

    n = 75;

    n <= m;

    r = n;

    语句执行结束后,r的值是75,而不是3,因为第3行是非阻塞赋值语句“n <= m”,该语句要等到本块语句结束时,n的值才能改变。

    实验任务1:

    学生实现十进制加法计数器的代码输入、综合、软件仿真;对软件仿真结果进行认真的分析,并通过软件仿真的结果来修改设计;

    实验任务2:

    学生根据十进制加法计数器的输入输出端口选择电路模式,并进行相应的引脚锁定、编程下载和硬件验证。

    【时钟由系统的clkB0或者B1输入,使能信号、复位信号则由按键输入,输出cout则由led灯显示,其余由数码管显示数值】

    实验总结

     

     

    展开全文
  • 这是十进制计数器,当设计文件加载到目标器件后,将数字信号源的时钟 选择为 1HZ,使拨动开关 K1 置为高电平(使拨动开关向上),四位 LED 会按照实验 原理中依次被点亮,当加法器加到 9 时,LED12(进位信号)被...
  • 模拟电子时钟设计

    2019-11-13 17:31:03
    技术准备: 设计完好的同步十进制加法计数电路(参考博客之前的解析)、设计完好的同步六进制加法计数电路(最晚明天将设计思路发布到博客中)、设计完好的同步十二进制加法计数电路(最晚明天将设计...

    题目: 数字电子时钟设计.

    所需硬件: 信号发生器1台、导线若干、D触发器18个(4+3+4+3+4)、16进制四引脚直接显示数码管6个、74151芯片4个、逻辑门若干、5V电源、10KΩ电阻若干、开关若干.

    技术准备: 设计完好的同步十进制加法计数电路(参考博客之前的解析)、设计完好的同步六进制加法计数电路(最晚明天将设计思路发布到博客中)、设计完好的同步十二进制加法计数电路(最晚明天将设计思路发布到博客中)、设计完好的十二进制数码管译码电路(本博文结尾处展示).

    设计思路:

            六十进制=六进制×十进制: 同步十进制加法计数电路作为六十进制两个数字的低位, 同步六进制加法计数电路作为六十进制两个数字的高位, 同步十进制加法计数电路的输出Y连接到同步六进制加法计数电路3个D触发器的CLK端. 

            在完成第一个六十进制计数器的设计后, 如法炮制上述思路, 再制造一个一模一样的六十进制计数电路. 之后将刚才同步六进制加法计数电路的输出Y连接到该六十进制计数器中的同步十进制加法计数电路4个D触发器的CLK端, 再将该六十进制计数电路中同步十进制加法计数电路的输出Y连接到该六十进制计数电路中同步六进制加法计数电路3个D触发器的CLK端. 

            完成上述工作后, 电子时钟的分和秒已经构架完毕, 接下来解决小时的显示即可. 看似"十二进制显示"不是件难事, 可要转换成我们认可的数字逻辑思维是有一定难度的: 若简单的用同步六进制加法计数电路和同步四进制加法计数电路级联构成十二进制计数电路, 这样做思想没错, 结果也没错, 就是不能按照我们认可的逻辑方式进行显示. 应该直接设计同步十二进制加法计数电路, 然后再设计一译码电路, 将12、1、2、3、4、5、6、7、8、9、10、11共十二个数字显示出来. 

    电路关联方法:

    0#同步十进制加法计数器的输出Y——>0#同步六进制加法计数器3个触发器的CLK, 

    0#同步六进制加法计数器的输出Y——>1#同步十进制加法计数器4个D触发器的CLK,

    1#同步十进制加法计数器的输出Y——>1#同步六进制加法计数器3个D触发器的CLK,

    1#同步六进制加法计数器的输出Y——>同步十二进制加法计数器4个D触发器的CLK.

    遗留问题:

            在用multisim7仿真运行时, 发现在数码管数字跳转的时刻显示不稳, 这可能是由于"竞争与冒险"导致的. 日后我会补充这一部分的知识, 对该模型继续改进.

    (电路源文件在"我的资源"中, 欢迎大家下载访问)

     

     

    展开全文
  • 地球人习惯使用十进制数,并且默认一个数字的每一位都是十进制的。而在 PAT 星人开挂的世界里,每个数字的每一位都是不同进制的,这种神奇的数字称为“PAT数”。每个 PAT 星人都必须熟记各位数字的进制...
  • 显示译码的使用

    2020-11-12 10:31:11
    74LS160是MSI 同步十进制加法计数器。要求:将十进制计数器的输出通过数码管显示出来。画出74160、显示译码和数码管的连接电路图。 1、 +5V直流电源 2、 逻辑电平开关 3、 逻辑电平显示器 4、 数字信号发生...
  • 本电路用四片74LS138和一片74LS139实现了5-32线译码的功能, 并以同步进制加法计数器的5个输出作为5位译码输入, 验证了设计的5-32译码的功能.
  • 2-76 用T'触发器构成的同步2进制加法计数器4520 2-77 用T触发器构成的同步2进制减法计数器 2-78 单时钟同步2进制可逆计数器74LS191 2-79 双时钟同步2进制可逆计数器74LS193 2-80 同步10进制加法计数器 2-81 ...
  • Contents1. 触发器的设计1.1 基本D触发器的设计1.1.1... 计数器的设计3.1 简单的四位二进制加法计数器3.2 带有异步复位和同步加载功能的十进制加法计数器4. 移位寄存器的设计5. 实验题目1)设计一个带计数使能、进位...
  • 目录时序逻辑概述2、时序逻辑电路的组成3、时序电路的分类时序逻辑电路分析1、时序逻辑电路分析步骤寄存器、移位寄存器1、数码寄存器2、移位...十进制计数器4、集成同步计数器(1)CT54161/CT74161(CT54160/CT74160)...
  • 在数字电路中,把记忆输人脉冲个数的操作称为计数,计数器就是实现计数操作的时序逻辑电路。计数 应用非常广泛,除用于计数、分频外,还用于... 74LS161是4位二进制同步加法计数器,除了有二进制加法计数功能外,
  • 2-76 用T'触发器构成的同步2进制加法计数器4520 2-77 用T触发器构成的同步2进制减法计数器 2-78 单时钟同步2进制可逆计数器74LS191 2-79 双时钟同步2进制可逆计数器74LS193 2-80 同步10进制加法计数器 2-81 同步10...
  • 74系列芯片中文手册

    2014-01-26 16:26:21
    74HC167 同步十进制比率乘法 74HC168 4位加/减同步计数器(十进制) 74HC169 同步二进制可逆计数器 74HC170 4*4寄存器堆 74HC171 四d触发器(带清除端) 74HC172 16位寄存器堆 74HC173 4位d型寄存器(带清除端) ...
  • 74HC系列PDF资料

    2008-11-26 16:14:04
    74HC162 同步十进制计数器(同步清除) 74HC163 4位二进制计数器(同步清除) 74HC164 8位移位寄存器(并入并出) 74HC165 8位移位寄存器(并入串出) 74HC166 8位移位寄存器(串并入串出) 74HC173 4位D型...
  • 74ls167 同步十进制比率乘法 74ls168 4位加/减同步计数器(十进制) 74ls169 同步二进制可逆计数器 74ls170 4*4寄存器堆 74ls171 四d触发器(带清除端) 74ls172 16位寄存器堆 74ls173 4位d型寄存器(带清除端) ...
  • 多年收集的ewb和multisim电子电路仿真实例文件,压缩后有50多兆。 文件列表 ...│ │ 2-76 用T'触发器构成的同步2进制加法计数器4520.ms9 │ │ 2-77 用T触发器构成的同步2进制减法计数器.ms9 │ │ ...
  • 积少成多,集腋成裘,坚持!!! 目录 1. 进制转换 2. 状态机和编码方式 3. 存储器的分类 4. Verilog语法中的操作符 ...10. 同步时序电路 ...14.加法器 ... 1....1、十进制46.25对应的二进制表达式为( )。 A 101110.11...
  • 1.1.5 二进制数与十进制数之间的转换 1.2 编码 1.2.1 十进制数的二进制编码 1.2.2 带符号的二进制数的编码 1.2.3 带小数点的数的编码 1.2.4 字符编码 习题 第二章 组合逻辑电路 2.1 逻辑代数 2.1.1 逻辑代数的基本...
  • 七、图6所示是16*4位ROM和同步十六进制加法计数器74LS161组成的脉冲分频电路。ROM中的数据见表1所示。试画出在CP信号连续作用下的D3、D2、D1、D0输出的电压波形,并说明它们和CP信号频率之比。 (16分) 表1: ...
  • VHDL 语言三位计数器

    2015-06-17 16:46:54
    十进制计数器,当计数满“十”时,应该向高位进位,同时计数变为“0”。在7段显示数码管上显示计数还需要把BCD码转换成7段显示相对应的码,这就需要设计一个译码。 三、实验内容 1、用VHDL语言编写一个BCD计数器并...
  • 设计要求是:TF_CTRL的计数使能信号ENB能产生一个1秒脉宽的周期信号,并对频率计中的6位十进制计数器CNT10的ENA使能端进行同步控制。当ENB高电平时允许计数;低电平时停止计数,并保持其所计的脉冲数。在停止计数...
  • 一元二次方程嵌套求有序3个数闰年计算矩形区域随机数ifelse回文数判断10进制转化16进制16进制转十进制暴力穷举无限循环指令循环同步异步黑科技读写内存读写内存无限循环监测重点与作业day5  复杂逻辑循环while...
  • Python Cookbook

    2013-07-31 22:33:26
    3.14 用Python实现的简单加法器 133 3.15 检查信用卡校验和 136 3.16 查看汇率 137 第4章 Python技巧 139 引言 139 4.1 对象拷贝 140 4.2 通过列表推导构建列表 144 4.3 若列表中某元素存在则返回之 146 ...
  • 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009——实现排序操作 实例010——使用Windows API创建程序窗口 实例011——使用AppWizard创建基于文档视图结构MFC应用程序框架 实例012——...
  • 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009——实现排序操作 实例010——使用Windows API创建程序窗口 实例011——使用AppWizard创建基于文档视图结构MFC应用程序框架 实例...
  • C++范例大全(400)

    2013-06-29 21:23:07
    实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009——实现排序操作 实例010——使用Windows API创建程序窗口 实例011——使用AppWizard创建基于文档视图结构MFC应用程序框架 实例012——...
  • 实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009——实现排序操作 实例010——使用Windows API创建程序窗口 实例011——使用AppWizard创建基于文档视图结构MFC应用程序框架 实例012——...
  • VC++6.0示例程序光盘

    热门讨论 2012-03-18 13:40:03
    实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009——实现排序操作 实例010——使用Windows API创建程序窗口 实例011——使用AppWizard创建基于文档视图结构MFC应用程序框架 实例012——...
  • VC++6.0示例程序光盘.part1

    热门讨论 2011-02-21 09:17:43
    实例007——将十进制数转换为二进制输出 实例008——产生随机数 实例009——实现排序操作 实例010——使用Windows API创建程序窗口 实例011——使用AppWizard创建基于文档视图结构MFC应用程序框架 实例012——...

空空如也

空空如也

1 2
收藏数 31
精华内容 12
关键字:

同步十进制加法器