17.分频器设计拓展练习-任意分频通用模块

(1)Verilog代码:

module divider_n(clk,reset_n,clk_out);
    
    input clk;
    input reset_n;
    output clk_out;

    wire clk_out1;
    wire clk_out2;
    
    wire [9:0]n;
    wire m;
    
    assign n = 9;
    assign m = n % 2;
    
    divider_even divider_even_inst(
        .clk(clk),
        .reset_n(reset_n),
        .n(n),
        .en(!m),
        .clk_out(clk_out1)
    );
    
    divider_odd divider_odd_inst(
        .clk(clk),
        .reset_n(reset_n),
        .n(n),
        .en(m),
        .clk_out(clk_out2)
    );
    
    assign clk_out = m ? clk_out2 : clk_out1;

endmodule
module divider_even(clk,reset_n,n,en,clk_out);

    input clk;
    input reset_n;
    input [9:0]n;       //分频数
    input en;
    
    output reg clk_out;
    
    reg [9:0]cnt;
    
    wire [9:0]MCNT;
    
    assign MCNT = (n >> 1) - 10'd1;

//计数器模块设计   
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            cnt <= 10'd0;
        else if ((cnt == MCNT)&&(en))
            cnt <= 10'd0;
        else if(en)  
            cnt <= cnt + 10'd1;
        else 
            cnt <= 10'd0;

//clk_out信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            clk_out <= 1'd0;
        else if (cnt == MCNT)
            clk_out <= ~clk_out;
        else 
            clk_out <= clk_out;
            

endmodule
module divider_odd(clk,reset_n,n,en,clk_out);

    input clk;
    input reset_n;
    input [9:0]n;     //分频数
    input en;
    
    output clk_out;
    
    reg [9:0]cnt;
    reg clk_1;
    reg clk_2;
    
    wire [9:0]MCNT;
    wire [9:0]Mid;
    
    assign MCNT = n - 10'd1;
    assign Mid  = (n >> 1);
 
//计数器模块设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            cnt <= 10'd0;
        else if((cnt == MCNT)&&(en))
            cnt <= 10'd0;
        else if(en)
            cnt <= cnt + 10'd1;
        else 
            cnt <= 10'd0;
            
//clk_1信号设计
    always@(posedge clk or negedge reset_n)
        if(!reset_n)
            clk_1 <= 1'd0;
        else if(cnt == Mid)
            clk_1 <= 1'd1;
        else if(cnt == MCNT)
            clk_1 <= 1'd0;
        else 
            clk_1 <= clk_1;

//clk_2信号设计
    always@(negedge clk or negedge reset_n)
        if(!reset_n)
            clk_2 <= 1'd0;
        else if(cnt == Mid)
            clk_2 <= 1'd1;
        else if(cnt == MCNT)
            clk_2 <= 1'd0;
        else 
            clk_2 <= clk_2;

    assign clk_out = (clk_1 | clk_2);

endmodule

(2)代码层次:

(3)仿真代码:

`timescale 1ns / 1ps

module divider_n_tb;

    reg clk;
    reg reset_n;
    
    wire clk_out;

    divider_n divider_n_inst(
        .clk(clk),
        .reset_n(reset_n),
        .clk_out(clk_out)
    );
    
    initial clk = 1'd1;
    always #10 clk = ~clk;
    
    initial begin
        reset_n = 1'd0;
        #15;
        reset_n = 1'd1;
        #2000
        $stop;
    end

endmodule

(4)仿真波形

(5)将顶层模块的n改成10,重新进行仿真

(6)引脚绑定:

(7)以下分别是n=10和n=25时的示波器实验现象,时钟频率为50MHz

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/785861.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

金融科技赋能:加马智能质检系统引领金融机构迈向高效合规新时代

为了保护消费者合法权益、促进市场稳定健康发展&#xff0c;近年来监管机构相继发布了《银行保险机构消费者权益保护管理办法》、《银行业金融机构销售专区录音录像管理暂行规定》、《保险销售行为管理办法》等多项法律法规&#xff0c;对于银行、保险等金融机构的服务、销售行…

使用void 0替代undefined

在很多大厂的规范里面&#xff0c;有这么一条规定&#xff1a;不让直接使用undefined关键字&#xff0c;而应该使用void 0来替代undefined。 一、void 0是什么意思&#xff1f; void是一个关键字&#xff0c;他后面跟的是一个表达式&#xff0c;不管这个表达式算的是啥&#…

Uniapp组件使用的详细步骤

官方文档&#xff1a;uni-app官网 (dcloud.net.cn) 一般用到的组件都在这里&#xff1a; 看介绍里面的注意事项&#xff0c;有注意的地方认真查看&#xff0c;使用的时候例如&#xff0c;以下示例日历&#xff0c;把代码粘贴到你的文件里&#xff0c;然后下载组件 1&#xff…

前端笔记-day13

文章目录 01-体验vw和vh02-vw适配02-适配.htmldemo.lessdemo.css 03-vw和vh不能混用03-vw和vh.htmldemo.lessdemo.css 04-综合案例-酷我demo.htmldemo.lessbase.lessdemo.css 酷我&#xff08;标准版&#xff09;index.htmlindex.lessindex.css 01-体验vw和vh <!DOCTYPE ht…

STM32的 DMA(直接存储器访问) 详解

STM32的DMA&#xff08;Direct Memory Access&#xff0c;直接存储器存取&#xff09;是一种在单片机中用于高效实现数据传输的技术。它允许外设设备直接访问RAM&#xff0c;不需要CPU的干预&#xff0c;从而释放CPU资源&#xff0c;提高CPU工作效率&#xff0c;本文基于STM32F…

【CSS01】CSS概述,使用样式的必要性,CSS语法及选择器

文章目录 一、什么是样式二、使用样式的必要性三、使用样式的几种方式四、CSS基本语法&#xff1a;五、CSS的注释六、CSS选择器——重点相关单词 一、什么是样式 概念&#xff1a; Cascade [kˈskeɪd] Style Sheet [ʃiːt] 级联样式单/表&#xff0c;层叠样式表 CSS有化腐…

【Linux进阶】文件系统2——MBR和GPT

1.磁盘的分区 因为如果你的磁盘被划分成两个分区&#xff0c;那么每个分区的设备文件名是什么&#xff1f; 在了解这个问题之前&#xff0c;我们先来复习一下磁盘的组成&#xff0c;因为现今磁盘的划分与它物理的组成很有关系。 我们谈过磁盘主要由碟片、机械手臂、磁头与主轴马…

安卓应用开发学习:腾讯地图SDK应用改进,实现定位、搜索、路线规划功能集成

一、引言 我的上一篇学习日志《安卓应用开发学习&#xff1a;通过腾讯地图SDK实现定位功能》记录了利用腾讯地图SDK实现手机定位功能&#xff0c;并能获取地图中心点的经纬度信息。这之后的几天里&#xff0c;我对《Android App 开发进阶与项目实战》一书第九章的内容深入解读…

js实现移动蒙版层

移动蒙版层 可在整个页面拖动方块&#xff0c;但方块不能超出页面 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0">…

企业可持续发展新篇章:社会责任管理体系认证的力量与魅力

在当今这个全球化与可持续发展并重的时代&#xff0c;企业已不再仅仅追求经济效益的最大化&#xff0c;而是日益重视其社会角色与责任。随着消费者、投资者及社会各界对企业行为期望的不断提升&#xff0c;社会责任管理体系认证正逐渐成为衡量企业综合竞争力的关键指标之一。这…

代码随想录(day2)双指针法(快慢指针法)

题目&#xff1a; 代码&#xff1a; class Solution(object):def removeElement(self, nums, val):fast0slow0sizelen(nums)while fast<size:if nums[fast]!val:nums[slow]nums[fast]slow1fast1return slow 需要注意的是&#xff0c;只要涉及到使用数组&#xff0c;那么就…

pycharm使用micropython

一、打开设置 2、搜索micropython、安装、重启 3、第5步需要设置成你插的电脑USB口&#xff0c;一个一个试 4、 5、 6、OK

快递柜也上网?你身边的物联网应用

快递柜相信大家都不陌生&#xff0c;如今在各类家庭小区、写字楼、工业园区&#xff0c;各类快递柜已经融入大家的日常&#xff0c;为大家的生活带来便利。大家已经习惯指尖交互就能一键取件&#xff0c;这么便捷的体验背后其实是有一套系统运作机制在支撑的&#xff0c;今天和…

下半年交火点:智驾全国都能开,智舱多模态大模型

“你猜一猜我现在参加什么样的活动呢&#xff1f;” “你参加的是WAIC&#xff0c;就是那个人工智能的大Party&#xff0c;超多科技高手都在这……” “你帮我介绍一下这本书吧。” “这书叫《反脆弱&#xff0c;从不确定性中获益》&#xff0c;讲的是怎么在混乱里找机会&am…

Apache配置与应用(优化apache)

Apache配置解析&#xff08;配置优化&#xff09; Apache链接保持 KeepAlive&#xff1a;决定是否打开连接保持功能&#xff0c;后面接 OFF 表示关闭&#xff0c;接 ON 表示打开 KeepAliveTimeout&#xff1a;表示一次连接多次请求之间的最大间隔时间&#xff0c;即两次请求之间…

Databend 开源周报第 152 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend。 支持内置 UDFs …

wordpress外贸建站公司案例英文模板

Indirect Trade WP外贸网站模板 WordPress Indirect Trade外贸网站模板&#xff0c;建外贸独立站用wordpress模板&#xff0c;快速搭建十分便捷。 衣物清洁wordpress独立站模板 洗衣粉、洗衣液、衣物柔顺剂、干洗剂、衣领净、洗衣皂等衣物清洁wordpress独立站模板。 家具wordpr…

《无所不能的JavaScript · prototype 原型链》

&#x1f4e2; 大家好&#xff0c;我是 【战神刘玉栋】&#xff0c;有10多年的研发经验&#xff0c;致力于前后端技术栈的知识沉淀和传播。 &#x1f497; &#x1f33b; 近期刚转战 CSDN&#xff0c;会严格把控文章质量&#xff0c;绝不滥竽充数&#xff0c;欢迎多多交流。&am…

python集成Bartender实现二维码打印

本文摘录于&#xff1a;https://blog.csdn.net/mynameisJW/article/details/105500773只是做学习备份之用&#xff0c;绝无抄袭之意&#xff0c;有疑惑请联系本人&#xff01; 这里上传我优化了一下的代码:https://download.csdn.net/download/chengdong1314/89522026 我这里弄…

Web3时代的数字身份认证:安全性与隐私保护探讨

随着区块链技术的发展和普及&#xff0c;数字身份认证正逐步成为Web3时代的关键基础设施。传统的身份认证系统存在着中心化数据存储、数据泄露和身份盗用等风险&#xff0c;而基于区块链的数字身份认证则通过去中心化、加密和分布式存储等特性&#xff0c;重新定义了安全性和隐…