精华内容
下载资源
问答
  • 循环计数器verilog
    2022-02-18 22:03:12

    1.1 FPGA面试题-使用Verilog实现可预置初值的7进制循环计数器

    1.1.1 本节目录

    1)本节目录;

    2)本节引言;

    3)FPGA简介;

    4)FPGA面试题-使用Verilog实现可预置初值的7进制循环计数器;

    5)结束语。

    1.1.2 本节引言

    “不积跬步,无以至千里;不积小流,无以成江海。就是说:不积累一步半步的行程,就没有办法达到千里之远;不积累细小的流水,就没有办法汇成江河大海。

    1.1.3 FPGA简介

    FPGA(Field Programmable Gate Array)是在PAL、GAL等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

    FPGA设计不是简单的芯片研究,主要是利用 FPGA 的模式进行其他行业产品的设计。 与 ASIC 不同,FPGA在通信行业的应用比较广泛。通过对全球FPGA产品市场以及相关供应商的分析,结合当前我国的实际情况以及国内领先的FPGA产品可以发现相关技术在未来的发展方向,对我国科技水平的全面提高具有非常重要的推动作用。

    与传统模式的芯片设计进行对比,FPGA 芯片并非单纯局限于研究以及设计芯片&

    更多相关内容
  • 作业2:循环计数器Verilog实现

    千次阅读 2017-11-04 21:19:04
    1.根据工程向导新建工程 ...2.新建一个Verilog-HDL文件,编写相关的Verilog语句,如下图所示 3.在TOOL下的选项中查看RTL图,如下图所示。 4.建立VWF文件,添加输入信号,然后观察仿真结果如下图所示

    1.根据工程向导新建工程

    2.新建一个Verilog-HDL文件,编写相关的Verilog语句,如下图所示


    3.在TOOL下的选项中查看RTL图,如下图所示。


    4.建立VWF文件,添加输入信号,然后观察仿真结果如下图所示


    展开全文
  • 计数器verilog

    2022-07-27 10:00:22
    各种计数器verilog代码实现

    目录

    常规带使能计数器

    加减计数器

    环形计数器

    约翰逊(Johnson)计数器(扭环形计数器)

    简易秒表

    低功耗可恢复计数器


    计数器的介绍

    计数器是应用最广泛的逻辑部件之一。计数器可以统计输入脉冲的个数,具有计时、计数、分频、定时、产生节拍脉冲等功能。

    计数器的种类繁多,根据计数器中触发器时钟端的链接方式,分为同步计数器和异步计数器;

    根据计数方式,分为二进制计数器、十进制计数器和任意进制计数器;

    根据计数器中的状态变化规律,分为加法计数器、减法计数器和加/减计数器。
     

    常规带使能计数器

    介绍:带使能端的模100异步清零计数器为例

    1. 设计代码

    // 以带使能的模100异步清零计数器为例----------
    
    `timescale 1ns/1ps
    module cnt #(parameter COUNT=100)(
    input clk,
    input rst_n,
    input cnt_en,
    output reg [6:0]out//如果参数化中COUNT比较大,需要更改out的位宽来适配
        );
    reg set;   
    
    always@(posedge clk or negedge rst_n) //异步清零
    begin 
    if(!rst_n)begin 
        out<=7'd0;set<=1'b0;
    end
    else if(cnt_en)begin
    //写法1:
            if(out!=COUNT-1)begin
                out<=out+1'b1;
                set<=1'b0;
            end
            else begin 
                out<=7'd0;
                set<=1'b1;
            end
    /*     
    //写法2:
         if(out==COUNT-1)begin 
            out<=7'd0;
            set<=1'b1;
        end
        else begin  
            out<=out+1'b1;
            set<=1'b0;   
        end */
    end
    else begin 
        out<=7'd0;set<=1'b0;
    end    //maybe
    end 
    endmodule

    2. 测试代码

    module cnt_tst();
     
    reg       clk     ;
    reg       rst_n   ;
    reg       cnt_en  ;
    wire [6:0]out     ;
     
    cnt U_cnt(
    .clk     (clk    ),
    .rst_n   (rst_n  ),
    .cnt_en  (cnt_en ),
    .out     (out    )
    );
     
    initial
    begin
    clk=1;
    rst_n=0;
    cnt_en=0;
    #10 rst_n=1;
    cnt_en=1;
    #100 cnt_en=0;
    #200 cnt_en=1;
    #2000 cnt_en=0;
    end
    always #10 clk=~clk;
     
    endmodule

    3. 仿真波形

     

    加减计数器

    1. 设计代码

    // ----------------------加减计数器-----------------
    
    
    `timescale 1ns/1ns
    
    module count_module(
    	input clk,
    	input rst_n,
    	input mode,
    	output reg [3:0]number,
    	output reg zero
    	);
        reg [3:0] num_temp;
        always @(posedge clk or negedge rst_n)
            begin
                if(~rst_n) begin
                    num_temp <= 4'b0;
                    number <= 4'b0;
                end
                else begin
                    if (mode == 1'b1) begin
                        if(num_temp == 4'd9) begin
                          num_temp <= 4'd0;
                          number <= num_temp;
                        end
                        else begin
                           num_temp <= num_temp + 4'd1;
                           number <= num_temp;
                        end
                    end
                    else begin
                         if(num_temp == 4'd0) begin
                            num_temp <= 4'd9;
                            number <= num_temp;
                         end
                         else begin
                            num_temp <= num_temp - 4'd1;
                            number <= num_temp;
                         end
                    end 
                end        
            end
        always @(posedge clk or negedge rst_n)
            begin
                if(~rst_n)
                    zero <= 4'b0;
                else
                    zero <= (num_temp == 4'b0);
            end
    endmodule

    2.测试代码

    module testbench();
    
    reg clk,rst_n;
    reg mode;
    reg [3:0]number;
    reg zero;
    
    count_module counter(
    .clk   (clk),
    .rst_n (rst_n),
    .mode(mode),
    .number(number),
    .zero (zero)
    );  
    
     initial
     begin
     clk=0;
     rst_n=0;
     mode = 1;
     #20 rst_n=1;
     #500 mode = 1;
     #500 mode = 0;
     #500 mode = 1;
     end
       
    always #10 clk=~clk;
         
    endmodule

    3.仿真波形

     

    环形计数器

    环形计数器,n个触发器表示n个状态。所谓环形,是指“1”,在每一组数中出现的位置形成的效果图,像一个环一样,依次循环,以4bit环形计数器为例子,“1”的位置依次在第0bit、第1bit,第2bit,第3bit,再回到第0bit,依次类推,就像一个环。如 4bit环形计数器:复位有效时输出0001,复位释放后依次输出0010,0100,1000,0001,0010…。

    1. 设计代码

    //环形计数器
    module ring_counter#(parameter word_size=4)(
    input clk,
    input rst_n,
    input enable,
    output reg [word_size-1:0]count
    );
    always@(posedge clk,negedge rst_n)
    if(!rst_n)
        count<={{(word_size-1){1'b0}},1'b1};
    else if(enable==1'b1)count<={
       count[word_size-2:0],count[word_size-1]};
    endmodule

    2. 测试代码

    module ring_counter_tst #(parameter word_size=4)();
    reg clk;
    reg rst_n;
    reg enable;
    wire [word_size-1:0]count;
    ring_counter U_ring_counter(
    .clk   (clk),
    .rst_n (rst_n),
    .enable(enable),
    .count (count)
    );   
     initial
     begin
     clk=0;
     rst_n=0;
     enable=0;
     #20 rst_n=1;
     #20 enable=1;
     
     end
       
    always #10 clk=~clk;
         
    endmodule

    3. 仿真波形

     

    约翰逊(Johnson)计数器(扭环形计数器)

    约翰逊(Johnson)计数器又称扭环计数器,是一种用n位触发器来表示2n个状态的计数器。约翰逊(Johnson)计数器有一个非常明显地好处,相邻两组数只有一位不同,具体如下例子所示,因此在计数过程中不会存在竞争冒险问题。

    以4bit约翰逊(Johnson)计数器为例,4bit约翰逊(Johnson)计数器,能表示8种状态,相邻两组数之间,仅有1bit不同:

    0000 1000 1100 1110 1111 0111 0011

    0001 0000 1000

    为什么叫扭环形呢?小编的理解:相邻两组数的变化很像是扭了一下,如上图中1000 和1100,将1000的高三位放在1100中的低三位,再将1000中最低位0取反,放到1100中的最高位。

    1. 设计代码

    module johnson_counter#(parameter WIDTH = 4)(
    input clk,
    input rst_n,
    output reg [WIDTH-1:0] cnt
    );
       
      always@(posedge clk or negedge rst_n) begin
        if(!rst_n)
          cnt <= { WIDTH { 1'b0 }};
        else
          cnt <= { ~cnt[0], cnt[WIDTH-1:1] };
      end
    endmodule

    2. 测试代码

    module johnson_counter_tst #(parameter WIDTH = 4)();
    reg clk;
    reg rst_n;
    wire [WIDTH-1:0] cnt;
     
    johnson_counter U_johnson_counter(
    . clk(clk),
    . rst_n(rst_n),
    . cnt(cnt)
    );
     
    initial
    begin
    clk=0;
    rst_n=0;
    #20 rst_n=1;
     
    end
     
    always #10 clk=~clk;
        
    endmodule

    3. 仿真波形

     

    简易秒表

    实现简易秒表的功能:具有两个输出,当输出端口second从1-60循环计数,每当second计数到60,输出端口minute加一,一直到minute=60,暂停计数。

    1. 设计代码

    `timescale 1ns/1ns
    
    module count_module (
        input clk,
        input rst_n,
        output reg [5:0]second,
        output reg [5:0]minute
    );
    
    always @(posedge clk or negedge rst_n)
    begin
        if(~rst_n) begin
            second <= 6'b0;
            minute <= 6'b0;
        end
        else begin
            if(minute == 6'd60) begin
                second <= second;
                minute <= minute;
            end
            else if(second == 6'd60)begin
                second <= 6'b1;
                minute <= minute + 6'b1;
            end
            else begin
                second <= second + 6'b1;
            end
        end
    end
    endmodule

    2. 测试代码

    module testbench();
    
    reg clk,rst_n;
    wire [5:0]second;
    wire [5:0]minute;
    
    count_module miaobiao_counter(
    .clk   (clk),
    .rst_n (rst_n),
    .second(second),
    .minute (minute)
    );  
    
     initial
     begin
     clk=0;
     rst_n=0;
     #20 rst_n=1;
     end
       
    always #10 clk=~clk;
         
    endmodule

    3. 仿真波形

     

     

    低功耗可恢复计数器

    这个暂时还没有找到资料,望批评指正~~

    引用

    计数器是非常基本的使用,没有计数器就无法处理时序。我在学习时发现市面上有几种不同的计数器写法,非常有趣,在此记录下来——咸鱼FPGA

    【手撕代码】数字IC秋招中常见六种计数器(含源码)——IC媛

    Verilog学习之路(9)—计数器和移位寄存器——Willliam_william

    展开全文
  • Verilog 0到99循环计数器

    千次阅读 2020-07-23 11:25:46
    设计一个2位十进制的循环计数器,从0到99,然后再回到0.输出为out0和out1,分别表示十进制数的高位和低位。 设计代码 `timescale 1ns / 1ps module Test1030(clk,rst,out0,out1,data); input clk; input rst; output...

    设计一个2位十进制的循环计数器,从0到99,然后再回到0.输出为out0和out1,分别表示十进制数的高位和低位。

    设计代码

    `timescale 1ns / 1ps
    module Test1030(clk,rst,out0,out1,data);
    input clk;
    input rst;
    output [3:0] out0;
    output [3:0] out1;
    output [7:0] data;
    reg [3:0] out0;
    reg [3:0] out1;
    wire [7:0] data;
    
    always @(posedge clk or negedge rst)
       if(!rst)
          begin
             out0=0;
             out1=0;
          end
       else
          begin
             if(out0= =9)
                begin
                   out0<=0;
                   out1=out1+1;
                end
             else
                out0<=out0+1;
             if(out1==10)
                out1<=0;
             else
                out1=out1;       
          end
     
    assign data=(10*(out1))+out0;
    
         
    endmodule
    

    测试代码

    `timescale 1ns / 1ps
    module Test1049;
    reg clk;
    reg rst;
    wire [3:0] out0;
    wire [3:0] out1;
    wire [7:0] data;
    
    always begin
       #10 clk=0;
       #10 clk=1;
    end
    
    initial begin
       clk=0;
       rst=0;
       #100;
       rst=1;
    end
    
    Test1030 x1(.clk (clk ),
                .rst (rst ),
                .out0(out0),
                .out1(out1),
                .data(data));
    endmodule
    

    仿真波形
    在这里插入图片描述
    在这里插入图片描述
    out0为低位输出,out1为高位输出,data将两个参数综合后输出两位十进制的数。

    展开全文
  • 1.1 FPGA面试题Verilog实现可预置初值的循环计数器 1.1.1 本节目录 1)本节目录; 2)本节引言; 3)FPGA简介; 4)FPGA面试题Verilog实现可预置初值的循环计数器; 5)结束语。 1.1.2 本节引言 “不积跬步...
  • verilog十二进制计数器

    千次阅读 2021-11-21 15:22:59
    rst),同步使能(en)功能的十二进制计数器,计数结果显示 在 DP8 数码管上,进位标志在 led8 灯显示。 具体设计要求: 1)以 1HZ 为计数脉冲,计数值显示在数码管 DP8 上,进位标志位 led8。 2)rst:0 ...
  • 采用2位7段数码显示器设计一个00~99循环计数器电路。输入包括一个时钟输入端和一个低电平复位端, 复位时输出88,两个输出分别控制高位和低位数码显示器。 7位数码管显示器的结构图如下: `timescale 1ns / 1ps ///...
  • verilog4位计数器

    2018-05-26 15:58:22
    这是使用verilog写的4位计数器,适用于初学者,程序可根据实际需要进行修改
  • 使用Verilog实现32位可逆计数器设计

    千次阅读 2020-08-19 22:55:42
    使用Verilog实现32位可逆计数器设计 可逆计数器: 可逆计数器就是在一个模块可以实现加法计数和减法计数。本质上还是一种计数器。 设计代码: module counter_2 ( input clk, input rst, input en, input [31:0]...
  • VerilogA——计数器

    2022-06-24 14:04:31
    VerilogA——计数器
  • (数字逻辑笔记)用Verilog实现4位计数器。(时序逻辑)
  • verilog编写的0-15计数器
  • Verilog——计数器

    千次阅读 2021-06-21 16:56:27
    时序逻辑代码设计 组合逻辑+触发器=时序逻辑 计数器 组合逻辑:这是一个加法器,做加一计算 Verilog代码: `timescale 1ns/10ps//写testbench定义时间单位 module counter( clk,//时钟信号 res,//复位信号 ...
  • verilog计数器

    千次阅读 2022-02-28 20:38:13
    理论学习 计数器实现的是计数,计数是一种最简单基本的运算。...计数器一般是从0开始计数,计数到我们需要的值或者计数满溢出后清零,并可以进行不断的循环,3位数的十进制计数器可最大计数到999,4位数的最大
  • verilog计数器

    2022-01-21 18:09:40
    // 秒计数器 0-9循环 `timescale 1ns/10ps module s_counter( clk, res, s_num ); input clk; input res; output[3:0] s_num; parameter frequency_clk = 24; // 24MHz r..
  • Verilog 练习 秒计数器

    2021-11-03 08:44:11
    //秒计数器,0-9循环; `timescale 1ns/10ps module s_counter(clk,res,s_num); input clk,res; output[3:0] s_num; parameter frequency_clk=24; //24MHz; reg[24:0] con_t;//秒脉冲分频计数器; reg s_pulse;/...
  • Verilog 三种计数器写法

    千次阅读 2020-08-03 02:18:41
    时钟周期 频率50MHz 倒数为1/(5*108)s=20ns,凑够一秒需要5 * 108个。 ms us ns ps 0计数器设计要点 1 初始值 a) 复位值...
  • 4. verilog实现BCD计数器 1 原理图 2 Verilog 代码 3 Modelsim仿真 BCD码:Binary-Coded Decimal,二进码十进数,是一种十进制的数字编码,用4位二进制数来表示十进制数中的0~9个十个数之一。BCD编码又可以分成...
  • 作业2:用Verilog实现12进制计数器

    千次阅读 2017-11-03 16:39:19
    2.新建Verilog文件,注意文件名称必须与工程相同, 编写完成后的文件如下图所示 通过TOOL工具栏的相关选项查看工程的RTL文件如下图所示 通过建立VWF仿真文件,并且加入使能信号、时钟信号后观察仿真的结果如下...
  • Verilog——秒计数器

    千次阅读 2021-06-24 16:33:35
    计数器
  • 8bits二进制计数器Verilog实现2.1 全部代码2.2 计数器行为描述的简化方式2.3 通过for循环描述计数器的行为狭义的计数器是指一些常用计时器,例如体育比赛中测试时间的计时器等,但本词条所要介绍的并不是这种计时...
  • 可置数计数器(加一个中间计数变量来增加一个时延)
  • 计数器的逻辑功能:记录时钟脉冲的个数 1、 模10计数器的设计与仿真 现要求设计模10计数器,0到9循环累加,计数满清0。 module Count_1( input clk, input rst_n, output reg [3:0] cnt ); always@(posedge clk...
  • 0~9999计数器

    2018-03-09 19:13:43
    0~9999计数器
  • verilog中的for 循环

    千次阅读 2021-09-19 10:45:12
    例1. module test( output reg [8:0] sumx , input [4:0] x ); parameter n = 3'd3; integer i ; always @ (*) ...for循环n次代表有n个相似的电路模块存在;代码上的“循环反馈”结构在阻塞赋值时代表前后
  • //秒计数器,0-9循环; `timescale 1ns/10ps module s_counter ( clk, res, s_num ); input clk; input res; output[3:0] s_num; parameter frequency_clk=24;//24MHz; reg[24:0] con_t;//秒脉冲分频计数器; ...
  • Verilog HDL 实现时钟计数器

    千次阅读 多人点赞 2021-11-22 18:22:49
    Verilog HDL 实现时钟计数器 文章目录Verilog HDL 实现时钟计数器一、简介二、代码的实现1、时钟分频2、时钟计数器三、效果展示 一、简介 我们在这里是实现一个一秒钟计数一次的计数器,也就是说是一个时钟计数器,...
  • Verilog学习之路(9)—计数器和移位寄存器 一、前言 计数器是应用最广泛的逻辑部件之一。计数器可以统计输入脉冲的个数,具有计时、计数、分频、定时、产生节拍脉冲等功能。 计数器的种类繁多,根据计数器中...
  • Verilog HDLBits--Count Clock (Complement)这篇文章延续上一篇HDLBits--(Verilog在线学习)--"105: Count Clock"。继常规 one-digit BCD编码,各位(如分钟的个位、十位等)分开单独显示 方法后,笔者提出一种十进制...

空空如也

空空如也

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

循环计数器verilog

友情链接: YIGYN5.rar