数字IC手撕代码-乐鑫科技笔试真题(4倍频)

 前言:

        本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。

目录如下:

1.数字IC手撕代码-分频器(任意偶数分频)

2.数字IC手撕代码-分频器(任意奇数分频)

3.数字IC手撕代码-分频器(任意小数分频)

4.数字IC手撕代码-异步复位同步释放

5.数字IC手撕代码-边沿检测(上升沿、下降沿、双边沿)

6.数字IC手撕代码-序列检测(状态机写法)

7.数字IC手撕代码-序列检测(移位寄存器写法)

8.数字IC手撕代码-半加器、全加器

9.数字IC手撕代码-串转并、并转串

10.数字IC手撕代码-数据位宽转换器(宽-窄,窄-宽转换)

11.数字IC手撕代码-有限状态机FSM-饮料机

12.数字IC手撕代码-握手信号(READY-VALID)

13.数字IC手撕代码-流水握手(利用握手解决流水线断流、反压问题)

14.数字IC手撕代码-泰凌微笔试真题

15.数字IC手撕代码-平头哥技术终面手撕真题

16.数字IC手撕代码-兆易创新笔试真题

17.数字IC手撕代码-乐鑫科技笔试真题(4倍频)

18.数字IC手撕代码-双端口RAM(dual-port-RAM)

        ...持续更新

 更多手撕代码题可以前往 数字IC手撕代码--题库


目录

题目描述

解决思路

二倍频

代码

波形

实现原理

四倍频

代码

testbench

波形


题目描述

        乐鑫科技考了好几次四倍频了,输入一个clk,要求输出一个clk_out,满足clk_out的频率是clk的四倍。

解决思路

        要注意的是,这里实现的是倍频,而不是分频,如果是分频的话很好实现,在笔者前期文章中对任意奇数分频、偶数分频、小数分频都做了具体介绍,但这里的倍频实现起来则需要一些不同于分频的技巧。

        这里实现的技巧就是利用组合逻辑的延时来实现倍频。 


二倍频

        在实现四倍频之前,我们先来实现二倍频。利用一小段组合逻辑clk_out = Q^clk来做延迟,然后Q的改变通过检测clk_out的上升沿来实现。实现代码如下:

代码

module double_f(input   clk     ,input   rstn    ,output  clk_out
);reg Q;
reg [4:0] count;
always @(posedge clk_out or negedge rstn)beginif(!rstn)beginQ <= 0;count <= 1'd0;endelse beginQ <= ~Q;count <= count + 1'b1;end
endassign clk_out = Q ^ clk;endmodule

波形

        通过计数器count可以看见,计数器每在clk_out的上升沿,计数器加1,从波形中我们可以看到计数器在每个clk的周期里,都加了两次1,也就是说clk_out的频率是clk频率的两倍,由此我们就实现了二倍频,只不过是占空比极小的二倍频。

实现原理

        初始化Q为0,在clk为低时, Q=0,clk=0所以,clk_out=Q^clk=0。在clk上升沿到来的瞬间,clk=1,Q=0,所以得到clk_out=Q^clk=1。从而clk_out的时钟上升沿到来,clk_out的时钟上升沿到来后,触发always语句块后的敏感事件列表,使得Q = ~Q;所以Q=1。右因为Q =1,clk=1,所以clk_out = Q ^clk=0,相当于产生了一个极小的脉冲。

        打开modelsim中仿真时间片的模式后,可以看见,clk上升沿时刻的数据变化和我们所描述分析的一致。下降沿同理。 


四倍频

        在理解了二倍频的实现原理(利用组合逻辑延时,配合always敏感事件列表创造极短脉冲)后,四倍频的实现也是同样的道理。

        只不过再二倍频的基础上, 再次二倍时,使用的参考时钟为第一次二倍频得到的时钟,譬如第一次二倍频产生的二倍时钟令其为clk_out_temp1,那么第二次做二倍频的时候,以clk_out_temp1为参考时钟,令clk_out_temp2 = Q1 ^ clk_out_temp1; 

代码

module four_f(
input clk     ,
input rstn    ,
output clk_out 
);wire clk_out_temp1,clk_out_temp2;
reg Q,Q1;
reg [4:0] count;
always@(posedge clk_out_temp1 or negedge rstn)beginif(!rstn)beginQ <= 0;end else beginQ <= ~Q;end
endassign clk_out_temp1 = Q^clk;always@(posedge clk_out_temp2 or negedge rstn)beginif(!rstn)beginQ1 <= 0;end else beginQ1 <= ~Q1;end
endassign clk_out_temp2 = Q1^clk_out_temp1;
assign clk_out = clk_out_temp1 ^ clk_out_temp2;always @(posedge clk_out or negedge rstn)beginif(!rstn)begincount <= 1'd0;endelse begincount <= count + 1'b1;end
endendmodule

testbench

module test_four();reg rstn,clk;
wire clk_out;initial beginrstn  <= 1;clk   <= 0;#5rstn  <= 0;#20rstn  <= 1;
end    always #5 clk = ~clk;four_f u_four_f(
.clk    (clk)     ,
.rstn   (rstn)    ,
.clk_out(clk_out) 
);endmodule

波形

        如何判断我们代码是否实现了二倍频呢?利用一个计数器,每在最终生成的clk_out时钟上升沿来进行计数器加1。 

always @(posedge clk_out or negedge rstn)beginif(!rstn)begincount <= 1'd0;endelse begincount <= count + 1'b1;end
end

        从波形图可以看到,每一个clk时钟周期里,count计数器都加了4,也就是经历了4个clk_out的时钟上升沿,也即,每一个clk周期,对应四个clk_out周期,也就是实现了我们所说的时钟四倍频,只不过四倍频得到的时钟的占空比非常小(波形图上展示为尖峰脉冲)。


 更多手撕代码题可以前往 数字IC手撕代码--题库

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

乐鑫科技2022笔试面试题

来源于读者投稿&#xff0c;作者来源于牛客网的 galun 。 投递方式&#xff1a;内推。 岗位&#xff1a;嵌入式软件实习生。 个人情况&#xff1a;本科双非电子信息工程&#xff0c;硕士华五软件工程研一在读&#xff1b;本科做过一些很水的项目 &#xff0c;也拿项目搞了一些奖…

chatgpt赋能python:Python下载模块并安装教程

Python下载模块并安装教程 Python 作为一门广泛应用于各个领域的编程语言&#xff0c;具有易学易用、生态丰富等诸多优势&#xff0c;然而为了方便我们进行某些操作&#xff0c;会需要下载一些第三方的模块。因此&#xff0c;本文将介绍如何下载模块并安装。 下载模块 下载模…

Java 基础入门笔记

Java 入门基础笔记 标识符 标识符必须以 字母 _ $ 开头 大小写敏感 可包含 字母 _ $ 不能是 JAVA 的 关键字 int String 驼峰规则 javaBasicKonwledge 基本数据类型 数值型字符型布尔型整数类型(byte short int long)char 字符型true浮点型(float double)String 字符串 …

串口软件Vofa+,超好用。可用于高速采集数据直观化显示动态

&#xff08;上一次写的不够完整&#xff0c;有好多人还会遇到问题&#xff0c;我再回来完善下&#xff09; 使用背景&#xff1a; 在调试无感的无刷直流电机的应用中&#xff0c;需要高速采集3路驱动电压&#xff0c;用于检测反电动势的“过零点”。 &#xff08;其实后来接…

国内IT软件外包公司汇总(2023 最新版)!

关注、星标公众号&#xff0c;直达精彩内容 原文&#xff1a;https://sourl.cn/Y757iG 最近很多读者问我只有外包的 offer 能去吗&#xff1f; 大环境不行&#xff0c;面试太少了&#xff0c;很多本科生想进外包都没机会。非常时期&#xff0c;不需要在意那么多&#xff0c;外包…

鼎捷T100权限管控设定

文章目录 一、名称解释1.1 角色1.2 用户1.3 账号 二、权限结构2.1 权限设置作业 三、权限实作3.1 角色规划3.2 用户数据设置 一、名称解释 1.1 角色 角色代表企业中的一个职能权限集合&#xff0c;例如业务职能需要有估报价单维护、订单维护等操作权限。 角色定义操作权限如作…

聚焦装备制造行业数智化转型 鼎捷软件勇担产业先锋

国务院政府工作报告指出&#xff1a;“十四五期间加快数字化发展&#xff0c;打造数字经济新优势&#xff0c;协同推进数字产业化和产业数字化转型”。制造业数字化转型作为产业数字化的重点体现&#xff0c;将成为未来中国制造业实现新发展的焦点所在。作为国民经济的支柱产业…

畅捷通T+和旺店通·企业奇门单据接口对接

数据源平台:旺店通企业奇门 慧策最先以旺店通ERP切入商家核心管理痛点——订单管理&#xff0c;之后围绕电商经营管理中的核心管理诉求&#xff0c;先后布局流量获取、会员管理、仓库管理等其他重要经营模块。慧策的产品线从旺店通ERP起步&#xff0c;向前向后延伸&#xff0c…

阿里云联合鼎捷软件发布云上数字工厂解决方案,实现云MES系统本地化部署

5月18日&#xff0c;阿里云与鼎捷软件联合主办的“云上数字工厂与中小企业数字化转型创新论坛”于线上举行。本次创新论坛上&#xff0c;阿里云弹性计算解决方案及运营负责人胡晓博与鼎捷软件上海事业部总经理袁能飞共同宣布“鼎捷MES&阿里云云盒云上数字工厂解决方案”正式…

鼎捷T100,TOPGP Debug时更改user

鼎捷T100&#xff0c;TOPGP Debug时更改user 有一些程序可能根据不同的用户设置了一些卡控或权限之类的&#xff0c;而我们debug的时候却用的是tiptop账号&#xff0c;如何在debug的时候更改用户呢&#xff1f; T100在debug的时候要过 CALL cl_ap_init(“cim”,“”) 函数 tip…

鼎捷T100标准接口调用

一、接口信息 我们先找接口信息,它们正常情况下都存在azzi700集成服务基本数据维护作业内, 接口地址:http://服务IP/wtoptst/ws/r/awsp920,鼎捷会给你的。 接口文档:在上图中的“API语系清单”内,标准接口一般包含简体和繁体两种模板。 二、接口调用步骤 以下用前面…

鼎捷软件顾华杰:鼎捷雅典娜是数智驱动的最佳典范

“人类自始至终就是数据驱动的物种&#xff0c;通过各种感官来取得对应的数据&#xff0c;通过脑内存储的知识来判断和回应外在的变化。现在&#xff0c;我们把未来数智系统的设计思路&#xff0c;回归到像人一样的简单&#xff0c;用数据来驱动和回应。”鼎捷软件副总裁顾华杰…

鼎捷T100 Oracle基础

文章目录 一、Oracle架构1.1 Oracle SGA架构简介1.2 Oracle SGA数据库运作说明1.3 Oracle实体与逻辑结构1.5 Oracle实体与逻辑结构 二、Oracle常用的一些指令三、管理Oracle Instance3.1 shutdown3.2 startup3.3 parameter files 四、常用Data Dictonary五、network六、Oracle常…

[管理]鼎捷软件售后服务体验

地点&#xff1a;白鹭洲大酒店 直接上图吧&#xff1a;

【观察】数智驱动+知识封装,鼎捷软件如何炼就“雅典娜”这个“新物种”?...

毫无疑问&#xff0c;过去几年随着数字化转型逐渐深入千行百业&#xff0c;越来越多的行业也正从“浅层次”数字化走向“深层次”数字化&#xff0c;因此未来如何进一步深化数智化转型&#xff0c;实现企业业务和商业模式的创新不仅是“大势所趋”&#xff0c;更是未来企业增长…

鼎捷软件:“数字化转型”喧嚣下,企业管理者们需要冷思考

随着时代的进步&#xff0c;势必会出现高唱着“转型”阔步向前的人和被大势裹挟着挪步的人。 作者丨周雅 这是希望之春&#xff0c;也是纷扰之冬。 全球疫情与百年未有之大变局交织&#xff0c;企业面临的不确定性与日俱增——来自技术演进、政策调整、需求变化、市场竞争等多个…

鼎捷软件易飞9.0ERP操作手册

亲手编制的鼎捷软件易飞9操作手册&#xff0c;共计&#xff1a;161页&#xff0c;全网最全。 技术支持QQ&#xff1a;395068518 承接易飞、易助ERP实施服务、二次开发服务、年&#xff08;半年&#xff09;维护服务&#xff01; 百度网盘链接&#xff1a;https://pan.baidu.…

ChatGPT下的自动化工具Auto-GPT、AgentGPT、BabyAGI和GodMode

ChatGPT 对于一个大目标来说&#xff0c;他是不知道怎么一步一步的帮我们构建出来。有了Auto-GPT、AgentGPT、BabyAGI和GodMode 这些自动化工具&#xff0c;我们只需要输入一个大目标&#xff0c;这些自动化工具能够帮我们一步一步轻松实现。 1.Auto-GPT 网址&#xff1a;htt…

用chatgpt学习pythonwebUI自动化

一、使用背景 之前写过javaselenium的web UI自动化&#xff0c;使用的selenium是偏老版本的&#xff0c;另外python初学&#xff0c;还不会使用。但在java编写的经历中&#xff0c;有几个概念&#xff1a; 1、需要使用测试框架&#xff0c;对测试用例进行生命周期管理&#x…

图解国家网信办《生成式人工智能服务管理办法(征)》| 附下载

伴随ChatGPT兴起&#xff0c;生成式人工智能技术正作为一种创造性应用&#xff0c;牵引场景创新&#xff0c;推动新技术迭代升级和产业快速增长。由于生成式人工智能处于发展初期&#xff0c;技术成熟度、政策合规性等发展不足&#xff0c;导致其极易面临非法获取数据、个人隐私…