首页 > 其他分享 >14.计数器拓展练习

14.计数器拓展练习

时间:2024-07-02 14:30:30浏览次数:3  
标签:reset set 14 clk 练习 计数器 property reg out

(1)Visio视图:

(2)Verilog代码:

module counter_ten(clk,reset_n,led_out);

    input clk;
    input reset_n;
    
    output reg led_out;
    
// 0.5s = 500_000_000ns = 20ns * 25_000_000;    需要25位的寄存器去储存。
    reg [24:0] cnt;
    reg en_cnt;
    reg cnt_flag;
    reg [4:0]flag_cnt;
    
//参数设计   
    parameter MCNT = 25'd24_999_999;
    
//计数器模块设计   
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            cnt <= 25'd0;
        else if(en_cnt && (cnt == MCNT))
            cnt <= 25'd0;
        else if(en_cnt)
            cnt <= cnt + 25'd1;
        else 
            cnt <= 25'd0;

//标志信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            cnt_flag <= 1'd0;
        else if(cnt == MCNT - 25'd1)
            cnt_flag <= 1'd1;
        else 
            cnt_flag <= 1'd0;

//flag_cnt信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            flag_cnt <= 5'd0;
        else if (cnt_flag)
            flag_cnt <= flag_cnt + 5'd1;
        else 
            flag_cnt <= flag_cnt;
            
//en_cnt信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            en_cnt <= 1'd0;
        else if((cnt_flag)&&(flag_cnt == 5'd19))
            en_cnt <= 1'd0;
        else if(flag_cnt < 5'd20)
            en_cnt <= 1'd1;       
        else 
            en_cnt <= en_cnt;
            
//led_out灯翻转设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            led_out <= 1'd0;
        else if(cnt_flag)
            led_out <= ~led_out;
        else 
            led_out <= led_out;        
     
endmodule    

(3)仿真文件代码:

`timescale 1ns/1ns
 
module counter_tb;
 
    reg clk;
    reg reset_n;
    
    wire led_out;
    
    counter_ten counter_ten_inst(
        .clk(clk),
        .reset_n(reset_n),
        .led_out(led_out)
    );
    
    defparam counter_ten_inst.MCNT = 25'd24;
    
    initial clk = 1'd1;
    always #10 clk = ~clk;
    
    initial begin
        reset_n <= 1'd0;
        #200;
        reset_n <= 1'd1;
        #30_000;
        $stop;
    end
 
endmodule

(4)仿真波形:

(5)引脚绑定:

set_property IOSTANDARD LVCMOS33 [get_ports led_out]
set_property IOSTANDARD LVCMOS33 [get_ports reset_n]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property PACKAGE_PIN M21 [get_ports led_out]
set_property PACKAGE_PIN N15 [get_ports reset_n]
set_property PACKAGE_PIN W19 [get_ports clk]

#4线spi模式
set_property CFGBVS VCCO [current_design]
set_property CONFIG_VOLTAGE 3.3 [current_design]
set_property BITSTREAM.CONFIG.SPI_BUSWIDTH 4 [current_design]
set_property CONFIG_MODE SPIx4 [current_design]
set_property BITSTREAM.CONFIG.CONFIGRATE 50 [current_design]

标签:reset,set,14,clk,练习,计数器,property,reg,out
From: https://blog.csdn.net/2301_80417284/article/details/140123190

相关文章

  • python复建 类继承练习:人力系统
    #类继承练习:人力系统员工分为两类:全职员工FullTimeEmployee、兼职员工PartTimeEmployee。#全职和兼职都有"姓名name"、"工号id"属性,#-井都具备"打印信息print_info"(打印姓名、工号)方法。梓全职有"月薪monthly_salary"属性,举兼职有"日薪daily_salary"属性、"每月......
  • Oracle day14
    /*createtablef0810(idnumber,timesvarchar2(50));insertintof0810values(1,'2019-12-2511:01');insertintof0810values(2,'2019-12-2511:03');insertintof0810values(3,'2019-12-2511:05');insertintof0810values(4,......
  • HTML-CSS练习2
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title></title><style>/*#boxul{width:500px;height:100px;list-style......
  • 14、爬虫-异步协程爬取西游记小说-aiohttp-aiofiles
     注意:有关所有的IO操作都要加上:await挂起 """https://dushu.baidu.com/pc/detail?gid=4306063500#小说网站https://dushu.baidu.com/api/pc/getCatalog?data={%22book_id%22:%224306063500%22}#可以拿到每个章节的bookid、cid(每个章节的id)、这里%22相当于"号htt......
  • 13.计数器设计、标志脉冲信号的使用
    (1)设计定义:设计一个计数器模块,实现每0.5秒跳转一次的功能,可以用LED灯的翻转来体现,要求初始状态为LED熄灭。(2)visio视图:(3)Verilog代码:modulecounter(clk,reset_n,led_out);inputclk;inputreset_n;outputregled_out;//0.5s=500_000_000ns=......
  • 动手学深度学习5.6 GPU-笔记&练习(PyTorch)
    以下内容为结合李沐老师的课程和教材补充的学习笔记,以及对课后练习的一些思考,自留回顾,也供同学之人交流参考。本节课程地址:17使用和购买GPU【动手学深度学习v2】_哔哩哔哩_bilibili本节教材地址:5.6.GPU—动手学深度学习2.0.0documentation(d2l.ai)本节开源代码:...>d......
  • 7.半加器拓展练习:使用与非门实现半加器
    使用always语句实现半加器:(1)报错:[HDL9-806]Syntaxerrornear"non-printablecharacterwiththehexvalue'0xef'". 原因:Verilog中带有中文字符(2)Verilog代码:moduleex_half_adder(A,B,Cout,Sum);inputA;inputB;outputregCout;......
  • HTML5+CSS3集训(14)
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><title>p180</title></head><body><divclass="container"><divclass="top"......
  • 中文翻译老挝语只推荐一个神器《老挝语翻译通》App,老挝语口语发音练习,支持老挝文OCR识
    出国旅游去探索东南亚的神秘国家:老挝,不会老挝语怎么办?不用怕,下载《老挝语翻译通》App帮助你把中文翻译成老挝语。功能亮点:实时翻译:实时把中文翻译成老挝语,老挝语单词或者句子均可均可准确翻译。语音识别翻译:无需打字,对着说话就能翻译,老挝语实时对话,流畅交流。OCR文字识别:......
  • 6.29~7.1 比赛和练习
    6.29CYEZXXSRound活动安排题目大意:给定\(n\)个线段,求最少划分为几个集合,使得每个集合内线段不交。\(n\le100\)解题思路:可以\(O(n^2)\)对于每一个线段,找到距离当前右端点最近的左端点然后跳到那个线段的右端点。可以\(O(n\logn)\)用优先队列维护。完成度:\(100\%\)......