• 已绑定课时
  • 工程师可点评
  • 需修改

【作业要求】 1、简述时序逻辑的基本概念和电路特点。 2、简述同步复位和异步复位各自的优缺点? 3、请使用Verilog设计一个2s计时器,写出详细的代码? 【我的做法】1、电路的输出取决于当前输入与原来状态,电路由组合逻辑电路和存储电路构成。 2、同步复位能有效滤除复位信号上的毛刺、有利于时序收敛和静态时序分析,但需要时钟参与且必须保持复位信号脉宽足够、会额外增加组合逻辑延迟;异步复位则响应速度…

童乐天
62 0
需修改
需修改
教务评价

需修改

3342599708 · 2026-08-05

1、补充:电路有记忆功能,属于边沿触发。 3、计数器从0开始计数,只能记到最大值-1.

1、简述时序逻辑的基本概念和电路特点。

2、简述同步复位和异步复位各自的优缺点?

3、请使用Verilog设计一个2s计时器,写出详细的代码?

【我的做法】1、电路的输出取决于当前输入与原来状态,电路由组合逻辑电路和存储电路构成。

2、同步复位能有效滤除复位信号上的毛刺、有利于时序收敛和静态时序分析,但需要时钟参与且必须保持复位信号脉宽足够、会额外增加组合逻辑延迟;异步复位则响应速度快、无需时钟就能立即生效,但复位信号上的毛刺极易直接触发错误状态,且复位释放时刻若与时钟沿冲突容易产生亚稳态和时序违例。

3、`timescale 1ns / 1ps

module D_reg(
input            sysclk        ,
input            rst_n         ,
input            D             ,
output reg       Q
);
always@(posedge sysclk)  /////边沿触发
if(!rst_n)  ////rst_n == 0  复位
Q <= 0;
else  /////不复位
Q <= D;
/////计时器的设计
/*
设计一个2s计时器
频率为50MHZ
f=50_000_000HZ   单位时间(1s)内晶振的次数为50_000_000
晶振1次的时间为:    t=1s/f=1_000_000_000ns/50_000_000=20ns
如果要记录1s,则需要FPGA晶振多少次?
1s/20ns=50_000_000
20ms/20ns=1_000_000
*/
//////1s计时器
parameter                TIME_2s = 28'd100_000_000  ;
reg        [27:0]        count                    ;
always@(posedge sysclk)
if(!rst_n)
count <= 0;    /////分支1:复位,赋初值
else    ////不复位
if(count < TIME_2s)    /////分支2:自加
count <= count + 1;    /////count++
else    ////count >= TIME_2s
count <= 0;    /////分支3:记到最大值,清零
endmodule

学习上下文

产出状态

工程师已阅62 位工程师
教务需修改