我是靠谱客的博主 紧张紫菜,最近开发中收集的这篇文章主要介绍【实验】寄存器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

学完后的收获:什么是寄存器,它能做什么、有什么特性、如何用 Verilog 语言来描述。

组合逻辑最大的缺点就是会存在竞争冒险,时序逻辑最基本的单元就是寄存器,寄存器具有存储功能,一般是由 D 触发器构成,由时钟脉冲控制,每个 D 触发器(D Flip Flop ,DFF)能够存储一位二进制码。

其复位又分为同步复位异步复位同步复位的 D 触发器中的“同步”是和工作时钟同步的意思,异步复位的 D 触发器中的“异步”是和工作时钟不同步的意思。主要就是复位有效的条件是“立刻”执行还是等待“沿”再执行的区别。

同步复位:sys_rst_n 被拉低后 led_out 没有立刻变为 0,而是当 syc_clk 的上升沿到来的时候 led_out 才复位成功

 

时序电路还有一个特点,就是“延一拍”的效果。

 

当表达时序逻辑时如果时钟和数据是对齐的,则默认当前时钟沿采集到的数据为在该时钟上升沿前一时刻的值;当表达组合逻辑时如果时钟和数据是对齐的,则默认当前时钟沿采集到的数据为在该时钟上升沿同一时刻的值。

我们在画波形图的时候一定要记住这个“延一拍”的效果,否则我们绘制的波形图就会和最后的仿真结果不符,也可能会导致最后的逻辑混乱。


同步复位的D触发器的HDL描述

module	flip_flop
(
	input	wire	sclk	,
	input	wire	rst_n	,
	
	input	wire	key_in	,
	output	reg		led_out
);

always@(posedge sclk) begin//同步复位:当敏感列表为检测到sclk上升沿时执行下面的语句
	if(rst_n == 1'b0)//大前提是:sclk的上升沿到来时
		led_out <= 1'b0;
	else
		led_out <= key_in;
end
endmodule

综合出的RTL图为

异步复位的D触发器的HDL描述

module	flip_flop_1
(
	input	wire	sclk	,
	input	wire	rst_n	,
	
	input	wire	key_in	,
	output	reg		led_out
);

always@(posedge sclk or negedge rst_n)//异步复位
	if(rst_n == 1'b0)//检测到rst_n的下降沿时立即复位,不需要等待sclk的上升沿来到后载复位
		led_out <= 1'b0;
	else
		led_out <= key_in;
endmodule

 

 

最后

以上就是紧张紫菜为你收集整理的【实验】寄存器的全部内容,希望文章能够帮你解决【实验】寄存器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(47)

评论列表共有 0 条评论

立即
投稿
返回
顶部