数字IC秋招手撕代码(二)50%占空比的三分频
数字IC秋招手撕代码(二)50%占空比的三分频
- 题目
- 设计思路
- 与逻辑分频
- 代码
- 或逻辑分频
- 代码
- 异或逻辑分频
- 代码
题目
用verilog实现三分频电路,要求输出50%占空比
设计思路
如果不限制占空比50%的话,那么用counter做3进制计数,每次counter=1拉高,counter=2拉低即可,但是这样的占空比是1/3。
如果要做50占空比的三分频,则需要一个上升沿的六分频和一个下降沿的六分频组合来得到。
类似的奇分频都可以这样实现。
大致有三种组合方式都可以得到:
- 与
- 或
- 异或
后续将上升沿采样记为clk_pos,下降沿采样记为clk_neg
与逻辑分频
- 用与逻辑来组合,需要clk_pos和clk_neg拉高2T,但是其本身有0.5T的时序差
- 那么在cnt=0时,clk_pos拉高2拍
- cnt=0时,clk_neg拉高2拍
- 最后clk_pos & clk_neg 即为分频结果
下面是理论波形图方便理解。
代码
module div_and #(parameter n=5)
(input clk,input rstn,output clk_div);reg [15:0] cnt;
reg clk_pos,clk_neg;assign clk_div = clk_pos & clk_neg;always @(posedge clk or negedge rstn)beginif(!rstn)cnt <= 0;else if(cnt==n-1)cnt <= 0;else cnt <= cnt + 1;
end always @(posedge clk or negedge rstn)beginif(!rstn)clk_pos <= 1'b0;else if(cnt==n-1)clk_pos <= 1'b1;else if(cnt==(n>>1))clk_pos <= 1'b0;
endalways @(negedge clk or negedge rstn)beginif(!rstn)clk_neg <= 0;else if(cnt==n-1)clk_neg <= 1'b1;else if (cnt==(n>>1))clk_neg <= 1'b0;
end endmodule
或逻辑分频
- 用或逻辑来组合,需要clk_pos和clk_neg只拉高1T,但是其本身有0.5T的时序差
- 那么在cnt=2时,clk_pos拉高1拍
- cnt=2时,clk_neg拉高1拍
- 最后clk_pos | clk_neg 即为分频结果
下面是理论波形图方便理解。
代码
module div_or #(parameter n=3)
(input clk,input rstn,output clk_div);reg [15:0] cnt;
reg clk_pos,clk_neg;assign clk_div = clk_pos | clk_neg;always @(posedge clk or negedge rstn)beginif(!rstn)cnt <= 0;else if(cnt==n-1)cnt <= 0;else cnt <= cnt + 1;
end always @(posedge clk or negedge rstn)beginif(!rstn)clk_pos <= 1'b0;else if(cnt==n-1)clk_pos <= 1'b1;elseclk_pos <= 1'b0;
endalways @(negedge clk or negedge rstn)beginif(!rstn)clk_neg <= 0;else if(cnt==n-1)clk_neg <= 1'b1;else clk_neg <= 1'b0;
end endmodule
异或逻辑分频
- 用异或逻辑来将两个六分频组合成三分频原理很简单,因为异或是相同为0,不同为1 所以需要将上升沿与下降沿差一半再翻转
- 如果上升沿在cnt=2时翻转,那么下降沿应该在cnt=1翻转
- 这样cnt带来了1T的时序差
- 而上升沿和下降沿自带0.5T的时序差。
下面是理论波形图方便理解。
代码
module div #(parameter n=3)
(input clk,input rstn,output clk_div);reg [15:0] cnt;
reg clk_pos,clk_neg;assign clk_div = clk_pos ^ clk_neg;always @(posedge clk or negedge rstn)beginif(!rstn)cnt <= 0;else if(cnt==n-1)cnt <= 0;else cnt <= cnt + 1;
end always @(posedge clk or negedge rstn)beginif(!rstn)clk_pos <= 0;else if(cnt==n-1)clk_pos <= ~clk_pos;
endalways @(negedge clk or negedge rstn)beginif(!rstn)clk_neg <= 0;else if(cnt==(n>>1))clk_neg <= ~clk_neg;
end endmodule
搜索关注我的微信公众号【IC墨鱼仔】,获取我的更多IC干货分享!
数字IC秋招手撕代码(二)50%占空比的三分频相关推荐
- 2021年oppo哲库数字IC岗位手撕代码真题(含:握手信号、自动售卖机、序列发生器、根据RTL写verilog)
大家好,最近汇总了2021年oppo哲库招聘手撕代码题目,本文章一共含有以下几个题目: 一,使用握手信号实现跨时钟域数据传输(verilog) 二,自动售卖机(verilog) 三,序列发生器(ver ...
- 秋招手撕代码:4bit转换为1bit,且是慢时钟域到快时钟域
/2021.08.05修改 今天和一个朋友讨论这个题,发现我之前写的代码存在两个问题:第一,不能直接对多bit数据进行打两拍:第二,这个写法,没有考虑到clk_out是clk_in的四倍及其以上,所以 ...
- 数字IC面试手撕代码(一)
1.最近看别人有面试说遇到这样一个问题.用状态机实现类似序列检测的题目:生成01011011101111-依次类推.针对这个问题,我设计如下的三段式状态机代码,用了4个状态,2个计数器. 设计之初,本 ...
- 秋招手撕代码:verilog实现常规8-3编码器和优先级8-3编码器
1.常规的8-3编码器(一次输入只有一个1) //8-3编码器:常规8-3编码器,每次的输入只有1个1,编码输出结果为1所处的位置module encoder( input D0, input D1, ...
- 2021年数字IC秋招总结
2021年数字IC秋招总结 欢迎各位想来 瑞晟微电子的将简历,带上以下信息: 姓名-学校-岗位 身份证号+邮箱 发到以下邮箱: 436090083@qq.com 我会在瑞晟微电子开始招聘的第一时间进行 ...
- 老学姐2021年数字IC秋招复盘
本着学习交流的目的,写了下面的内容,希望大家都能拿到心仪的offer. 1. 秋招变春招? 从我个人经历来说是这样的,因为今年很多企业六七月份就开始提前批了,而我六七月还在做项目,等我开始的时候,发现 ...
- 算法手撕代码46~50
深度学习/机器视觉/数字IC/FPGA/算法手撕代码目录总汇 目录 1.二叉搜索树的第k个节点 2.两个栈实现队列 3.青蛙跳台阶
- 数字IC秋招---笔试记录
2022年7月更新!!! 1.组合逻辑电路的冒险现象是由于()引起的? 2.芯片制造中,工艺节点28nm,12nm,7nm的含义? 3.哈佛结构和冯诺依曼结构? https://blog.csdn.n ...
- 2022届FPGA/数字IC秋招笔试面试汇总帖(题目来源:FPGA探索者)
目录 001--什么是STA静态时序分析,有什么作用? 具有代表性的STA工具: 静态时序分析STA: (1)setup time (2)hold time (3)STA 的时序路径 (4)recov ...
最新文章
- 人工智能和机器学习技术推动企业发展
- 删除目录下大量小文件和清空大文件
- 5G NGC — AUSF 鉴权服务功能
- hdu4277 DFS+SET
- 【Groovy】Groovy 扩展方法 ( Groovy 扩展方法引入 | 分析 Groovy 中 Thread 类的 start 扩展方法 )
- c语言操作空间怎么打开_学好C语言,离大神更近一步,C环境的安装
- 无盘服务器为什么重启还原,无盘站反复重启怎么办
- Data Poisoning Attacks to Deep Learning Based Recommender Systems论文解读
- python买卖股票_用Python买卖股票III的最佳时间
- Linux环境SOCKET编程1:套接字
- matlab 韩明距离_科学网—Matlab中 pdist 函数详解(各种距离的生成) - 朱新宇的博文...
- python 视频文件格式和分辨率转换
- 暗金色 rgb_杜伽TAURUS K310樱桃RGB红轴体验:做工精良、手感优秀
- Excel怎么换行?简单!Excel大神教会了我N种换行方法
- 贷超分销系统的模式!
- Three.js加载动画模型并控制播放
- 电脑版微信聊天记录和小程序视频播放黑屏,但有声音,qq和其浏览器视频播放正常。如何解决?
- 华为鸿蒙arm,华为亮大招:鸿蒙系统+5G万物互联+1亿 掌握ARM架构修改
- element-ui upload 上传组件附带额外参数进行上传(表单形式,多个参数)
- 管理运筹学软件计算机解咋看,管理运筹学-线性规划的计算机求解ppt课件.ppt
热门文章
- SpringBoot项目解决@ResponseBody注解返回xml格式数据而不是json格式的问题
- PDF文件如何快速转换成Word文件?两个方法教你搞定
- python编程趣味试题_Python趣味编程-中国大学mooc-试题题目及答案
- 六、文件管理(1.文件和文件系统)
- 基于J2EE人事考勤管理系统设计与实现(论文+项目源码) 运行环境: idea ,maven,mysql
- 刷脸支付就是会员为大商户管理与运营提供帮助
- 异步爬取有道词典(入门js逆向)
- PySpark——开启大数据分析师之路
- 2011 信义聚会记实
- msfvenom生成木马攻击-Windows10实现自己黑自己