FPGA 02 时序逻辑计数器设计

1.任务

        设计以1s闪烁的LED灯,即亮灭各500ms。

2.数电基础简述

2.1 逻辑电路

        逻辑电路是基于二进制的,由逻辑门电路(AND/NOT/OR)组成的,可以实现存储、控制以及传输等功能的电路。分为组合逻辑电路和时序逻辑电路两种,其中时序逻辑电路又分为同步时序逻辑电路和异步时序逻辑电路。

2.2.1 组合逻辑电路

        1.特点:不含记忆元件,输出与输入间无反馈关系。任意时刻的输出仅仅取决于该时刻的输入,与电路原来的状态无关(入变出即变)

        2.描述:逻辑函数表达式、逻辑电路图、真值表、卡诺图、波形图以及Verilog语言描述

        3.应用:编码器(Encoder)、译码器(Decoder)、数据分配器(Demux)、多路选择器(MUX)、加法器(Adder)等

2.2.2 时序逻辑电路

        1.结构:由组合逻辑电路和存储电路组成

        2.特点:具有记忆功能,任意时刻的输出不仅取决于该时刻的输入,而且还和电路原来的状态有关。

        3.同步时序逻辑电路:由统一的时钟信号控制,当时钟信号出现时,电路状态发生变化,持续到下一个时钟信号出现。

        4.异步时序逻辑电路:没有统一的时钟,各级触发器的状态变化不是在统一的时钟作用下完成的,电路的状态是直接由输入信号决定,电路结构简单,但是速度慢,随着位数的增加,计数器从接受计数脉冲到稳定状态的建立,时延也大大增加。

        5.应用:计数器、寄存器等

2.2 D触发器(D Flip Flop)

        D触发器(DFF)是构成时序逻辑电路最基本的逻辑单元,按照时钟脉冲(Clock Pulse)信号控制方式,分为上升沿控制与下降沿控制两种。

        真值表和状态方程如下,简言之DFF就是次态只与输入有关。

Q^{n+1}=D

            

3.设计与验证

3.1 逻辑设计

module led_flash(
	led,clk,reset_n);

	input clk;
	input reset_n;
	output reg led;

	reg [24:0] counter;

	always@(posedge clk or negedge reset_n)
	if(!reset_n)
		counter <= 0;
	else if(counter == 24999999)
		counter <= 0;
	else 
		counter <= counter+1'd1;
	
	always@(posedge clk or negedge reset_n)
	if(!reset_n)
		led <= 0;
	else if(counter == 24999999)
		led <= !led;

endmodule

3.2 TestBench

` timescale 1ns/1ns

module led_flash_tb;

	reg clk;
	reg reset_n;
	wire led;

	led_flash led_flash(
		.clk(clk),
		.reset_n(reset_n),
		.led(led)
	);

	initial clk =1;
	always #10 clk = !clk;

	initial begin
		reset_n = 0;
		#201;
		reset_n = 1;
		#2000000000;
		$stop;
	end
endmodule

3.3波形

  • 9
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值