精华内容
下载资源
问答
  • 数字跑表6位数码显示Multisim源文件,Multisim13以上版本可打开运行
  • FPGA数字跑表设计

    2020-06-29 16:36:07
    FPGA数字跑表设计,内附项目设计分析报告+Verilog HDL代码+仿真结果,可直接烧写于FPGA中,适用于FPGA的初学者使用!
  • 数字跑表的核心部件是计数器,给出合理的时钟脉冲从而实现最低位的计数以及对高位的进位。时序脉冲源由555定时器构成的多谐振荡器,设置特定的参数可以产生频率为100Hz的时序脉冲,为计数器提供时序脉冲,使之进行...
  • 数字跑表 秒表

    2018-12-09 19:50:53
    利用黑金开发板开发数字秒表系统,实现以下功能: (1)建议使用数码管、按键和按键; (2)实现秒表功能,在数码管上能实现秒的定时功能,范围为0-59秒; (3)上电后,秒表处于初始复位状态,显示值为“00”; (4...
  • 代码
  • vhdl数字跑表程序

    2012-09-24 15:06:06
    vhdl中数字跑表实用程序,简洁明了,印象深刻
  • 数字跑表设计 文章目录Verilog数字系统设计八前言一、数字跑表设计是什么?二、编程1.要求:2.设计思路:3.实现代码:4.仿真测试:总结 前言 随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人...

    Verilog数字系统设计八

    数字跑表设计



    前言

    随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。

    提示:以下是本篇文章正文内容,1 编程实现一个数字跑表。该跑表模块端口至少应包括:
    1.1 CLK: 时钟信号(测试时钟频率自己设定);
    1.2 CLR: 异步复位信号;
    1.3 START: 开始计时信号(异步使能);
    1.4 PAUSE: 暂停计时信号(异步使能);
    1.5 MSH,MSL: 百分之一秒的高位和低位;
    1.6 SH,SL: 秒信号的高位和低位;
    1.7 MH,ML: 分钟信号的高位和低位。

    一、数字跑表设计是什么?

    示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。

    二、编程

    1.要求:

    1.1 CLK: 时钟信号(测试时钟频率自己设定);
    1.2 CLR: 异步复位信号;
    1.3 START: 开始计时信号(异步使能);
    1.4 PAUSE: 暂停计时信号(异步使能);
    1.5 MSH,MSL: 百分之一秒的高位和低位;
    1.6 SH,SL: 秒信号的高位和低位;
    1.7 MH,ML: 分钟信号的高位和低位。

    2.设计思路:

    1.百分秒低位逢十进一
    2.百分秒高位逢十进一
    3.秒低位逢十进一
    4.秒高位逢六进一
    5.分低位逢十进一
    6.分秒高位逢十进一
    

    3.实现代码:

    代码如下:

    module digitalMeter(CLK,CLR,START,PAUSE,MSH,MSL,SH,SL,MH,ML); 
    input CLK,CLR,PAUSE,START;
    output [3:0] MSH,MSL,SH,SL,MH,ML;
    reg [3:0] MSH,MSL,SH,SL,MH,ML;
    reg CY1,CY2; //CY1为百分秒向秒的进位,CY2为秒向分的进位
    //百分秒计数模块,每计满100,CY1 产生一个进位
    always @(posedge CLK or posedge CLR) 
    begin
        if(CLR) 
        begin 
            {MSH,MSL}=8'b00;
            CY1=0;
        end
        else if((START)&&(!PAUSE))
        begin   //START为1且PAUSE为0时,正常计数
            if(MSL==9) 
            begin
                MSL=0; //低位计数至10时,低位归零
                if(MSH==9) 
                begin
                    MSH=0; //低、高位计数至10时,高位归零
                    CY1=1; //低、高位计数至10时,触发进位位
                end
                else //低位计数至10,高位计数未至10时,高位计数
                    MSH=MSH+1;
            end
            else 
            begin
                MSL=MSL+1; //低位计数未至10时,低位计数
                CY1=0; //低位计数未至10时,不触发进位位
            end
        end
    end
    //秒计数模块,每计满60,CY2 产生一个进位
    always @(posedge CY1 or posedge CLR) 
    begin
        if(CLR) 
        begin 
            {SH,SL}=8'b00;
            CY2=0;
        end
        else if(SL==9) 
        begin
            SL=0;  //低位计数至10时,低位归零
            if(SH==5) 
            begin
                SH=0;  //低位计数至10,高位计数至6时,高位归零
                CY2=1; //低位计数至10,高位计数至6时,触发进位位
            end
            else
                SH=SH+1; //低位计数至10,高位计未数至6时,高位计数
        end
        else 
        begin
            SL=SL+1;  //低位计数未至10时,低位计数
            CY2=0; //低位计数未至10时,不触发进位位
        end
    end
    //分钟计数模块,每计满100,系统自动清零
    always @(posedge CY2 or posedge CLR) 
    begin
        if(CLR) 
        begin 
            {MH,ML}=8'b00;
        end
        else if(ML==9) 
        begin
            ML=0; //低位计数至10时,低位归零
            if(MH==9)
                MH=0; //低位计数至10,高位计数至10时,高位归零
            else
                MH=MH+1; //低位计数至10,高位计未数至6时,高位计数
        end
        else
            ML=ML+1; //低位计数未至10时,低位计数
    end
    endmodule
    
    

    测试代码如下:

    module digitalMeter_T;
    reg CLK_T,CLR_T,START_T,PAUSE_T;
    wire [3:0] MSH_T,MSL_T,SH_T,SL_T,MH_T,ML_T; 
    initial
      begin
        CLK_T = 0;
        CLR_T = 1;
        START_T = 0;
        PAUSE_T = 0;
        #5
        CLR_T = 0;
        START_T =1;
      end
    always #10 CLK_T = ~CLK_T;
    digitalMeter myDigitalMeter(
        .CLK(CLK_T),
        .CLR(CLR_T),
        .START(START_T),
        .PAUSE(PAUSE_T),
        .MSH(MSH_T),
        .MSL(MSL_T),
        .SH(SH_T),
        .SL(SL_T),
        .MH(MH_T),
        .ML(ML_T));
    endmodule
    
    

    4.仿真测试:

    ①百分秒低位逢十进一
    在这里插入图片描述

    ②百分秒高位逢十进一
    在这里插入图片描述

    ③秒低位逢十进一

    在这里插入图片描述

    ④秒高位逢六进一

    ⑤分低位逢十进一

    ⑥分秒高位逢十进一

    总结

    提示:
    以上就是今天要分享的内容,本文仅仅简单介绍了Verilog实现一个数字跑表。
    该跑表模块端口至少应包括:
    1.1 CLK: 时钟信号(测试时钟频率自己设定);
    1.2 CLR: 异步复位信号;
    1.3 START: 开始计时信号(异步使能);
    1.4 PAUSE: 暂停计时信号(异步使能);
    1.5 MSH,MSL: 百分之一秒的高位和低位;
    1.6 SH,SL: 秒信号的高位和低位;
    1.7 MH,ML: 分钟信号的高位和低位。

    展开全文
  • verilog 数字跑表代码

    2018-01-29 21:20:33
    用verilog HDL编写的一个具有“百分秒、秒、分”计时功能的数字跑表,可以实现一个小时以内精确至百分之一秒的计时,注释比较清晰,容易看懂,还可以增加小时的计时功能
  • EDA(Electronic Design Automation)电子设计自动化技术...CPLD即复杂可编程逻辑器件,早期CPLD是从GAL的结构扩展而来,但针对GAL的缺点进行了改进,因此可用于各种现实生活中的应用,比如说本次课程设计数字跑表
  • 数字跑表设计

    2014-06-25 12:54:43
    数字集成电路使用Verilog HDL编写数字跑表程序
  • 支持一小时正数倒数计时,具有蜂鸣器秒响功能,暂停开始功能等
  • verilog设计数字跑表

    2012-11-30 20:50:36
    verilog设计的数字跑表: 1.具有暂停/启动功能; 2.具有重新开始功能; 3.用6个数码管分别显示百分秒、秒和分钟。
  • 基于FPGA的数字跑表设计

    千次阅读 2019-12-10 13:36:33
    数字跑表的FPGA设计 目录 〇、设计要求 一、数字跑表计时模块的设计 二、数码管显示设计 三、按键扫描和消抖模块 四、综合设计 〇、设计要求 1、整体设计框图如下。实现具备下诉功能需求的跑表。由数码管...

    数字跑表的FPGA设计

    目录

    〇、设计要求

    一、数字跑表计时模块的设计

    二、数码管显示设计

    三、按键扫描和消抖模块

    四、综合设计

     

    〇、设计要求

    1、整体设计框图如下。实现具备下诉功能需求的跑表。由数码管显示百分秒、秒、分等计时。

    2、任务分析

    输入端口:

    1)复位信号CLR,当CLR=1,输出全部置0,当CLR=0,系统正常工作。

    2)暂停信号PAUSE,当PAUSE=1,暂停计数,当PAUSE=0,正常计数。

    3)系统时钟CLK50M,CLK=50MHz。

    输出端口:

    数码管位选选通控制,选择哪个数码管亮——dig_tube,位宽8位,依次控制8个数码管。

    数码管段选,即每个数码管的七段显示控制——dig_code,位宽8位,数码管显示值。

     

    一、数字跑表计时模块的设计

    1、RTL设计

    源程序为 digital_stopwatch.v

    顶层端口:

    综合后的顶层框图如下:设计要求按照PPT所述。

     

    2、仿真

    仿真文件为 test_digital_stopwatch.v

    示例测试代码如下:

    测试结果如下。

    暂停仿真测试:

    分秒计时测试:

    秒计时仿真:

    分钟计时仿真:

     

    3、总结

    设计通过50MHz的输入时钟,分频得到100Hz的慢速时钟,实现分秒计数。并通过对进位标志的求和,实现秒、分、时的计时。

    设计实现了CLR异步重置、PAUSE暂定计时,并输出相应的时进位标志,分、秒、分秒计数值。

    注意:上述代码中,只实现了秒表的计数,分秒计时、秒计时、分计时、和小时进位标志,并具备复位和暂停功能。但是数码管部分的代码,没有实现,还需要添加。

     

    二、数码管显示设计

    一共有8个数码管,依次控制 百分秒、秒、分钟、小时的显示。

    分析:以1ms 的频率扫描输出行数据给8个数码管,所以完成8个数码管的依次输出显示的总时间为8ms。程序把计数程序时间计时的各个数据位数字赋给个位数码管,十位数字赋给十位数码管,依次完成8个数码管的赋值。

    1、顶层接口如下。

     

    2、代码介绍

    将计时时间数值的个位和十位分解出来。

     

    每个数码管的段选编码0~9。

     

    三、按键扫描和消抖模块

    顶层如下,实现赞同和复位按键的检测和滤波。

    采样按键值,20ms扫描一次,采样频率小于按键毛刺频率,相当于滤除掉了高频毛刺信号

     

    四、综合设计

    综合后的顶层,添加好UCF文件后,下载测试。

    其RTL原理图。

    测试如下,暂停、复位、计数功能均正常。设计完成。当前测试时间为22min,25秒,18百分秒。

    标题
    展开全文
  • [FPGA]基于FPGA的数字跑表

    千次阅读 2020-11-17 20:14:38
    基于FPGA的数字跑表的设计与实现 一、设计要求 用FPGA设计并实现一个数字跑表,范围为0~59分59.99秒。可以实现数字跑表进行启动、停止计时和显示读数三个操作,可以在数码管上显示读数。 二、设计任务 2.1基本部分 ...

    基于FPGA的数字跑表的设计与实现
    一、设计要求
    用FPGA设计并实现一个数字跑表,范围为0~59分59.99秒。可以实现数字跑表进行启动、停止计时和显示读数三个操作,可以在数码管上显示读数。
    二、设计任务
    2.1基本部分
    (1)了解FPGA开发板,了解数字跑表的功能。
    (2)VHDL语言编程实现数字跑表系统的功能模块,数字跑表进行启动、停止、显示读数操作,并具有计时清零功能;
    (3)程序编译正确,在Modelsim中仿真正确;
    (4)采用FPGA开发板作为开发平台,能够下载验证。
    2.2提高部分
    能够采用原理图设计法设计。
    三、设计原理
    图3.1系统框图
    在这里插入图片描述
    如图,如果要实现计时范围为0~59分59.99秒的数字跑表并在数码管上显示读数,那么需要设计时钟电路、分频电路、计数器电路、译码显示1电路。将DE1-SOC开发套件中提供的50MHZ时钟进行分频至100HZ后送入100进制计数器,计数器计满100后发出进位信号送入计秒模块的60进制计数器,计数器满60后发出进位信号送入计分模块的60进制计数器,每个计数器分别连接不同的数码管显示电路,实时显示计时效果。因此使用原理图输入设计法,使用QuartusII软件编写元件代码和绘制原理图,而后进行综合仿真。
    四、设计方案
    4.1 硬件设计
    本设计需要用到一个稳定的50MHZ的时钟,一个500000分频的分频器,一个100进制计数器,两个60进制计数器,两个拨码开关,六个7段数码管。综上所述,DE1-SOC开发套件提供的FPGA芯片可满足对分频器和计数器的设计需求,丰富的外部设备可满足对数码管和拨码开关的需求。
    图4.1 DE1-SOC开发板实物图

    4.2 软件设计
    一百进制计数器采用两个十进制计数器级联的方式实现,六十进制计数器采用十进制和六进制计数器级联的方式实现。在这里插入图片描述
    4.2.1 分频器

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_ARITH.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY CLOCK IS
    PORT(CLK:IN STD_LOGIC;
    	  CLKOUT:OUT STD_LOGIC);
    END CLOCK;
    ARCHITECTURE RTL OF CLOCK IS
    SIGNAL CLK_1_REG: STD_LOGIC := '1';
    BEGIN
    CLKOUT<=CLK_1_REG;
    PROCESS(CLK)
    VARIABLE COUNT :INTEGER RANGE 0 TO 500000;
    BEGIN
    	IF(CLK'EVENT AND CLK='1')THEN
    		IF COUNT = 500000 THEN
    			COUNT:=0;
    			CLK_1_REG<=NOT CLK_1_REG;
    		ELSE
    			COUNT:=COUNT+1;
    		END IF;
    	END IF;
     END PROCESS;
     END RTL;
    

    4.2.2 数码管显示电路

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    ENTITY HEX IS
    PORT(	HEXIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);
    		HEXOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
    END HEX;  
    ARCHITECTURE RTL OF HEX IS
    BEGIN
    PROCESS(HEXIN)
    BEGIN
    	CASE HEXIN IS
    		WHEN "0000" => HEXOUT <="1000000";
    	   WHEN "0001" => HEXOUT <="1111001";
    		WHEN "0010" => HEXOUT <="0100100";
    		WHEN "0011" => HEXOUT <="0110000";
    		WHEN "0100" => HEXOUT <="0011001";
    		WHEN "0101" => HEXOUT <="0010010";
    		WHEN "0110" => HEXOUT <="0000010";
    		WHEN "0111" => HEXOUT <="1011000";
    		WHEN "1000" => HEXOUT <="0000000";
    		WHEN "1001" => HEXOUT <="0010000";
    		WHEN "1010" => HEXOUT <="0001000";
    		WHEN "1011" => HEXOUT <="0000011";
    		WHEN "1100" => HEXOUT <="1000110";
    		WHEN "1101" => HEXOUT <="0100001";
    		WHEN "1110" => HEXOUT <="0000110";
    		WHEN OTHERS => HEXOUT <="1000000";
    	END CASE;
     END PROCESS;
    END RTL;
    

    4.2.3 十进制计数器

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY COUNTER10 IS
        PORT(CLK,CLR,EN: IN STD_LOGIC;
             DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
             COUT : OUT STD_LOGIC);
    END COUNTER10;
    ARCHITECTURE RTL OF COUNTER10 IS
    BEGIN
        PROCESS(CLK,CLR,EN)
            VARIABLE Q : STD_LOGIC_VECTOR (3 DOWNTO 0);
        BEGIN
        IF CLR = '1' THEN Q := (OTHERS => '0');
        ELSIF CLK'EVENT AND CLK = '1' THEN
                IF EN = '1' THEN 
                    IF Q < 9 THEN Q := Q + 1;
                    ELSE Q := (OTHERS => '0');
                    END IF;
                END IF;END IF;
        IF Q = "0000" THEN COUT <= '1';
        ELSE COUT <= '0'; 
        END IF;
        DOUT <= Q;	
        END PROCESS;
    END RTL;
    

    4.2.4 六进制计数器

    LIBRARY IEEE;
    USE IEEE.STD_LOGIC_1164.ALL;
    USE IEEE.STD_LOGIC_UNSIGNED.ALL;
    ENTITY COUNTER6 IS
    PORT(CLK,CLR,EN: IN STD_LOGIC;
         DOUT : OUT STD_LOGIC_VECTOR (3 DOWNTO 0);
         CO : OUT STD_LOGIC);
    END COUNTER6;
    ARCHITECTURE RTL OF COUNTER6 IS
    BEGIN
    PROCESS(CLK,CLR,EN)
    VARIABLE Q : STD_LOGIC_VECTOR (3 DOWNTO 0);
    BEGIN
    IF(CLR='1')THEN
    	Q:="0000";
    	CO<='0';
    ELSIF(CLK'EVENT AND CLK = '1') THEN
    	IF(EN='1')THEN
    		IF(Q <5)THEN
    			Q := Q + 1;
    		ELSE
    			Q := (OTHERS => '0');
    		END IF;
    	END IF;
    END IF;
    IF Q = "0000" THEN 
    	CO <= '1';
    ELSE
    	CO <= '0'; 
    END IF;
    DOUT <= Q;
    END PROCESS;
    END RTL;
    

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    QQ:1187060103

    展开全文
  • FPGA 数字跑表设计

    2020-11-07 12:35:03
    FPGA:两路跑表(计数范围0-99) 开发板:minifpga,六个数码管,动态扫描 两路跑表,中间空两格,计数范围0-99,可分别控制暂停或开始 计数至99后停止计数,全局复位归零。 module DFF_SW(clk, in, out);//D触发器...

    FPGA 数字 跑表

    开发板:minifpga,六个数码管,动态扫描
    两路跑表,中间空两格,计数范围0-99,可分别控制暂停或开始
    计数至99后停止计数,全局复位归零。
    在这里插入图片描述
    在这里插入图片描述

    module DFF_SW(clk, in, out);//D触发器模块
      parameter n=5;
      input clk;
      input [n-1:0] in;  
      output [n-1:0] out;  
      reg [n-1:0] out;
      always @(posedge clk)  out = in ;
    endmodule
    
    module Counter(clk, rst, in0,in1, count0,count1,Light0,Light1) ;//计数器模块,in循环控制暂停开始  
      parameter n=5 ;
      input rst, clk ,in0,in1; 
      output  [n-1:0] count0,count1 ;
      output Light0,Light1;
      reg	[n-1:0] next0,next1 ;
      
       always@(*)
       begin
    	  if (count0>=99)//计数器计数范围为0-99,记到99时停止计数
    	   next0= rst? 0 : count0;
    	  else//rst复位信号有效,计数清零。in输入高电平时暂停,in变低后继续计数。
          next0= rst? 0 : (in0? count0 : count0+ 1'b1  );
       end
      assign Light0=rst|in0;//清零或暂停时LED亮起以做提示。
      
       always@(*)
       begin
    	  if (count1>=99)//计数器计数范围为0-99,记到99时停止计数
    	   next1= rst? 0 : count1;
    	  else//rst复位信号有效,计数清零。in输入高电平时暂停,in变低后继续计数。
          next1= rst? 0 : (in1? count1 : count1+ 1'b1  );
       end
      assign Light1=rst|in1;//清零或暂停时LED亮起以做提示。
      
      DFF_SW #(n) cnt0(clk, next0, count0) ; //第一路路表
      DFF_SW #(n) cnt1(clk, next1, count1) ; //第二路跑表
    endmodule
    
    module div(clock_in,clock_out);//时钟分频模块
      input clock_in;
      output clock_out;
    
      reg clk_p_r;
      reg clk_n_r;
      reg [F_DIV_WIDTH-1:0] count_p;
      reg [F_DIV_WIDTH-1:0] count_n;
    
      parameter F_DIV=48000000;//分频参数设置,因为开发板时钟为50MHz,当此值为50000000时,可得1Hz频率
      parameter F_DIV_WIDTH=32;//
    
      wire full_div_p; 
      wire half_div_p;
      wire full_div_n;
      wire half_div_n;
    
      assign full_div_p = (count_p<F_DIV-1);
      assign half_div_p = (count_p<(F_DIV>>1)-1);
      assign full_div_n = (count_p<F_DIV-1);
      assign half_div_n = (count_p<(F_DIV>>1)-1);
     
      assign clock_out = (F_DIV==1)? clock_in:(F_DIV[0]? (clk_p_r&clk_n_r):clk_p_r);
    
      always @(posedge clock_in)
      begin
       if(full_div_p)
       begin
         count_p=count_p+1'b1;
         if(half_div_p)
           clk_p_r=1'b0;
         else
           clk_p_r=1'b1;
       end
       else
       begin
          count_p=0;
          clk_p_r=1'b0;
       end
      end  
    
      always@(negedge clock_in)
      begin
         if(full_div_n)
         begin
           count_n=count_n+1'b1;
           if(half_div_n)
              clk_n_r=1'b0;
           else 
              clk_n_r=1'b1;
         end
         else
         begin
           count_n=0;
           clk_n_r=1'b0;
         end
      end    
    endmodule
    
    
    module disp_dec_SW(hex,dispout);//将八位的输入信号转化为两位十进制的七段译码输出,前
                                     //八位接一个数码管显示十位,后八位接一个数码管显示个位
     input [7:0] hex;
     output [15:0] dispout;
     reg [7:0] dec;
    
      always@(hex)//将8位二进制数转化为2位BCD码
      begin
        dec[7:4]=hex/4'd10;
        dec[3:0]=hex%4'd10;
      end
      
      dual_hex_SW u1(dec, dispout);//调用2位七段显示模块
    endmodule
    
    module dual_hex_SW(datain,dispout);//2位七段显示模块
      input [7:0] datain;
      output [15:0] dispout;
    
      seg_decoder_SW u1(datain[7:4],dispout[15:8]);//十位
      seg_decoder_SW u2(datain[3:0],dispout[7:0]);//个位
    endmodule
    
    module seg_decoder_SW (iA,oY);//一位七段译码模块Q
      input [3:0] iA;
      output reg [7:0] oY;
    
      always@(iA)
      begin 
        case(iA)
          4'b0000:oY=8'h3f;//“0”
          4'b0001:oY=8'h06;//“1”
          4'b0010:oY=8'h5b;//“2”
          4'b0011:oY=8'h4f;//“3”
          4'b0100:oY=8'h66;//“4”
          4'b0101:oY=8'h6d;//“5”
          4'b0110:oY=8'h7d;//“6”
          4'b0111:oY=8'h27;//“7”
          4'b1000:oY=8'h7f;//“8”
          4'b1001:oY=8'h6f;//“9”
          4'b1010:oY=8'h77;//“a”
          4'b1011:oY=8'h7c;//“b”
          4'b1100:oY=8'h58;//“c”
          4'b1101:oY=8'h5e;//“d”
          4'b1110:oY=8'h79;//“e”
          4'b1111:oY=8'h71;//“f”
        endcase
       end
    endmodule
    
    module Display(clk,rst,in1,in0,DigtronCS_out,Digtron_out);//扫描驱动模块
      input clk,rst;
      input [15:0] in1,in0;
      output [7:0] Digtron_out;
      output [5:0] DigtronCS_out;
      
      parameter Timex=8'd200;//设置扫描频率为250kHz
      
      reg [7:0] Digtron_out;
      reg [5:0] DigtronCS_out;
       reg  [7:0] Count;
      
       initial
        DigtronCS_out=6'b111110;	
    
    	
    	always@(posedge clk)
     
    	  begin
    	   if(Count ==Timex)
    	     begin
    		    Count <=8'd0;
    			if(DigtronCS_out==6'b111101)//循环到中间两个数码管时跳过--
    			    DigtronCS_out=6'b101111;//--使其片选信号始终为高,作为间隔始终不显示
    			 else
    			 DigtronCS_out<={DigtronCS_out[4:0],DigtronCS_out[5]}; //扫描片选状态循环 
    		  end  
    		else 
    		  begin
    	     Count =Count +1'b1;	
    		  DigtronCS_out<=DigtronCS_out;
    		  end
         end	
     
      always@(posedge clk)
      begin
        	case (DigtronCS_out)
    		    6'b111110:Digtron_out=in0[7:0];
    			 6'b111101:Digtron_out=in0[15:8];
    			 6'b101111:Digtron_out=in1[7:0];
    			 6'b011111:Digtron_out=in1[15:8];
    		endcase	
      end
    endmodule
    
    顶层模块
    module Stopwatch (clk,rst,in0,in1,DigtronCS_out,Digtron_out,Light0,Light1);
      input clk, rst,in0,in1;
      output [7:0] Digtron_out;
      output [5:0] DigtronCS_out;
      output Light0,Light1;
      wire   [7:0] o0,o1,count0,count1;
      wire   [15:0]o0_dis,o1_dis;
      wire  clk_1Hz;
    
    
      
      assign o0=count0;
      assign o1=count1;
     
      div #(50000000,32) nclk1(clk,clk_1Hz);
      Counter #(8) cnt(clk_1Hz, rst, in0,in1, count0,count1,Light0,Light1);
      disp_dec_SW SW0(o0,o0_dis);
      disp_dec_SW SW1(o1,o1_dis);
      Display  b1(clk,rst,o1_dis,o0_dis,DigtronCS_out,Digtron_out);
    endmodule
    
    
    展开全文
  • endcase end end endmodule 三、总结 数字跑表,首先要想好,如何通过FPGA板子内部时钟获得毫秒?通过毫秒如何获得秒、分钟? 其次如何将毫秒、秒、分钟各自的个位、十位对应显示到动态数码管上? //TOP顶层...
  • 数字跑表论文

    2011-12-17 10:55:25
    根据设计要求,首先对数字跑表进行结构和功能的划分。计数器部分设三个输入端,分为时钟启动,暂停,复位按键以及单片机的重启键。启动,暂停,复位键都是低电平有效,开始三个键都置空,接通电源,开始运行显示...
  • 74LS160数字跑表

    2015-05-30 14:54:16
    基于74LS160的数字跑表,能实现百分秒0-99,秒,分的计时,外加启动/暂停,清零电路。
  • 数字跑表的显示可以通过编写数码管显示程序来实现,本实例只给出了数字跑表的实现过程。同时可以增加小时的计时功能,实现完整的跑表功能。 2.实例目标 本实例主要实现计数即进位的设计,通过几个always模块的设计...
  • 数字跑表程序

    2013-01-15 17:25:40
    用verilog写的数字跑表程序,程序简洁易懂,适合初学者学习
  • verilog数字跑表

    2014-06-23 10:19:15
    verilog数字跑表 建模仿真验证 包含代码和详细分析
  • 实例的主要内容本节通过Verilog HDL语言编写一个具有“百分秒、秒、分”计时功能的数字跑表,可以实现一个小时以内精确至百分之一秒的计时。本文引用地址:http://www.eepw.com.cn/article/201706/348835.htm数字...
  • 数字跑表具有复位、暂停、秒表计时等功能。3个输入端为时钟输入(clk)、复位(clr)、启动与暂停(pause)按键。
  • 数字跑表计时器

    2013-10-15 12:12:40
    vhdl语言实现数字跑表,可计时一个小时。
  • Verilog HDL设计数字跑表&数码管显示

    千次阅读 多人点赞 2020-04-07 18:33:54
    用Verilog HDL设计数字跑表&数码管显示   用Verilog HDL设计一个数字跑表,具有复位、暂停、秒表等功能,同时为了便于显示,百分秒、秒、分钟信号均采用BCD码计数方式,并直接输出到6个数码管中   首先我们...
  • 数字跑表课程设计:该设计有报告和代码 要求: 1.具有暂停/启动功能; 2.具有重新开始功能; 3.用6个数码管分别显示百分秒、秒和分钟。 Solution:根据要求,采用自底向上的设计方法整体来说分为两大部分:一部分...
  • EDA数字跑表

    2011-12-11 13:11:44
    用Verilog语言编写程序,实现数字跑表启动,暂停,计数功能
  • verilog 实现数字跑表

    2011-05-31 20:42:19
    如果你是肥大学子,在做verilog课程设计,不用再看了,这就是你需要的!...功能描述:此数字跑表由三个按键控制,按键功能如下: SW1:实现暂停、开始以及数据的保存 SW2:实现清零 SW3:实现已保存数据的显示
  • FPGA数字跑表.doc

    2021-10-07 07:53:32
    FPGA数字跑表.doc
  • EDA数字跑表设计

    2012-11-08 18:01:01
    基于eda的一个数字秒表的设计,包括部分仿真结果,和全部的vhdl源程序

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 282
精华内容 112
关键字:

数字跑表