龙空技术网

用D触发器搭建4进制的计数器

嵌入式小美老师 131

前言:

现在兄弟们对“计数器verilog十进制”大概比较珍视,咱们都想要分析一些“计数器verilog十进制”的相关内容。那么小编在网上汇集了一些关于“计数器verilog十进制””的相关知识,希望我们能喜欢,姐妹们一起来学习一下吧!

今天为大家解析诺瓦科技数字IC设计岗的简答题,简答题需要根据题目要求在纸上写出答案,然后通过手机拍照上传。

回看:第一期;第二期;

11、用D触发器搭建4进制的计数器。

解析:本题目主要考察了数字电路基础中的计数器设计。

题目看上去很简单,要求实现一个4进制的计数器,但要用D触发器来搭建,这显然不会像写Verilog实现一样容易,所以我们要用数字电路中的传统方法来设计。

4进制计数器必须有4个不同的状态,所以需要两个D触发器组成这个电路。电路的状态表如下所示:

电路次态的卡诺图如下所示:

【嵌入式物联网单片机学习】嵌入式物联网开发需要学的东西比较多,大家可以加下面微信一起学习,整理了100多G(全网最全)的学习资料包(持续更新)、最新的学习路线思维导图。

各种学习群、项目开发教程。还可以围观我朋友圈中的一手行业消息,每周的技术大咖直播答疑吹水。

点击这里加我嵌入式物联网单片机学习

计数器的状态方程为:Q*0 = Q’1Q’0 | Q1Q’0 = Q’0、Q*1 = Q’1Q0 | Q1Q’0

输出方程为:C = Q1Q0

将D触发器的特性方程Q(n+1) = D(n)(Q*0是Q0的次态,所以Q*0 = D0,同理Q*1 = D1)代入上面计数器的状态方程得到下面的关系:D0 = Q’0、D1 = Q’1Q0 | Q1Q’0

根据代入后的状态方程绘制出的电路图如下所示(这里我们直接通过编写Verilog来自动生成电路图):

//---------------------------------

01 module test(

02 input wireclk,

03 input wirerst_n,

04

05 outputwire[1:0]counter

06 );

07

08 reg Q1, Q0;

09 wireD1, D0;

10

11 always@(posedge clk or negedge rst_n)

12 if(!rst_n)

13 Q0 <= 1'b0;

14 else

15 Q0 <= D0;

16

17 always@(posedge clk or negedge rst_n)

18 if(!rst_n)

19 Q1 <= 1'b0;

20 else

21 Q1 <= D1;

22

23 assign D0 = ~Q0;

24 assign D1 = (~Q1&Q0)|(Q1&(~Q0));

25 assign counter = {Q1,Q0};

26

27 endmodule

//---------------------------------

关于用D触发器设计相关的题目还有“求职攻略| 用D触发器实现9分频电路,设计步骤详解(大华FPGA岗解析)”第46题目。

12、如下代码在综合时是否可以综合出时钟门控电路?如果能,画出时钟门控示意图,如果不能,请修改使信号out可以综合出时钟门控电路。

always@(posedge clk or negedge rst_n) begin

if(rst_n == 1’b0)

out <= 64’b0;

else

if(out_en)

out <= data;

else

out <= 64’b0;

end

解析:本题目主要考察了时钟门控电路的设计

时钟门控电路一定要有一个使能信号来控制时钟是否工作。题干中的代码确实有一个使能信号,但无论该使能信号是否有效,时钟都始终处理工作状态。也就是说,这个使能信号无法对时钟进行控制,而是控制输出数据等于输入还是为0,所以代码在综合时不能综合出时钟门控电路,综合出的结果如下所示:

我们在“求职攻略| 这种情况一定要用门控时钟!”有详细的讲解过如何给系统插入一个安全有效的门控制时钟,参考后将本例代码修改为如下所示:

//---------------------------------

reg enl;

always@(posedge clk or negedge rst_n) begin

if(rst_n == 1'b0)

enl <= 1'b0;

else

enl <= out_en;

end

assign clk_en = clk & out_en;

always@(posedgeclk_en or negedge rst_n) begin

if(rst_n == 1'b0)

out <= 16'b0;

else

out <= data;

end

//---------------------------------

综合出的结果如下所示,使能信号可以控制时钟是否工作。

13、clk_tx为50MHz,clk_rx为120MHz,两者之间异步,sig_a为clk_tx时钟域的脉冲信号,请画出将sig_a跨时钟域到clk_rx域的异步处理电路示意图。

解析:本题目主要考察了单比特跨时钟域的电路结构

这道题目非常简单,是单比特信号跨时钟域的问题,且是慢速时钟跨域同步到快速时钟域的问题,直接将单比特信号在快速时钟域打两拍即可,电路图这里不再给出。单比特信号从快速时钟跨域同步到慢速时钟域的跨时钟域的电路结构大家也应该记住,请参考“加油站| 单比特信号跨时钟域问题详解(大疆FPGA逻辑岗A卷)”第1题。

14、触发器D1(延时Tck-q)的建立时间最大为T1max,最小为T1min,触发器D2(延时Tck-q)的建立时间最大为T2max,最小为T2min,组合逻辑电路最大延迟为Tmax,最小为Tmin。请问,时钟周期T应该满足什么条件?触发器D2的保持时间应满足什么条件。

解析:本题目主要考察了时序分析的计算

关于时序分析的相关计算是重点,是一道必考题,相关的公式推导我们在“加油站| FPGA时序分析看这篇就够了(大疆逻辑岗)”第4题中有过详细的讲解。另外这道题目还给出了建立时间、组合逻辑电路的最大、最小延迟,在求不同的变量时要选取不同的值。根据P(Process)V(Voltage)T(Temperature)的要求,我们应该使用慢速、低压、高温的模型(延迟大)来分析建立时间相关的问题,用快速、高压、低温的模型(延迟小)来分析保持时间相关的问题,这样才能够获得建立时间和保持时间最边界的情况,方便我们分析出最准确的时序关系。(对于落后的工艺是遵循这个规则的,但是对于先进工艺来说,小尺寸产生的一些效应变得更为复杂,很难确定哪个corner是最坏的情况,为了更准确的分析时序关系,通常使用foundary提供的signoff corner来做时序分析,所以本题目我们还是用落后的工艺规则来分析)。

第一问求时钟周期应满足什么条件,需要使用建立时间余量公式:[T-(Tco+Tdata)+△T]-Tsu≥0,所以要用延迟大的参数,得时钟周期T应满足:T≥T1max+Tmax

第二问求保持时间应满足什么条件,需要使用保持时间余量公式:[(Tco + Tdata)-△T] -Th≥0,所以要用延迟小的参数,得保持时间应满足:Th≥T1min+Tmin

END

原文链接:

文章来源于:求职攻略| 用D触发器搭建4进制的计数器

文章转载自:达尔闻说

原文链接:求职攻略| 用D触发器搭建4进制的计数器

版权声明:本文来源于网络,免费传达知识,版权归原作者所有,如涉及作品版权问题,请联系我进行删除

标签: #计数器verilog十进制 #计数器 verilog 功能框图 #verilog计数器设计实验体会 #verilog6进制计数器 #verilog16进制计数器