常用时序逻辑电路设计


本文主要用来存放各种时序电路代码,异步时序电路分析见另一篇文章,主要是一些跨时钟域处理电路及方法。

窄脉冲捕获电路.
MUX同步器.
握手协议.

同步时序逻辑电路

序列检测器

从一串二进制数据中找到指定的字符串并输出信号。找“1101”,序列为16’b1110_1010_1101_0011。
状态机:
在这里插入图片描述
代码:

module test(
	input	clk,
	input	rst_n,
	input	data,
	
	output	reg y
);

localparam	st0 = 2'b00;
localparam	st1 = 2'b01;
localparam	st2 = 2'b10;
localparam	st3 = 2'b11;

reg [1:0]	cur_stat;
reg [1:0]	nxt_stat;

//1
always @(posedge clk or negedge rst_n)begin
	if(!rst_n)
		cur_stat = st0;
	else	
		cur_stat = nxt_stat;	
end

//2
always @(*)begin
	case(cur_stat)
		st0:begin
			if(!data)
				nxt_stat = st0;
			else
				nxt_stat = st1;
		end
		st1:begin
			if(!data)
				nxt_stat = st0;
			else
				nxt_stat = st2;
		end
		st2:begin
			if(!data)
				nxt_stat = st3;
			else
				nxt_stat = st2;
		end
		st3:begin
			if(!data)
				nxt_stat = st0;
			else
				nxt_stat = st0;
		end
	endcase		
end

//3
always @(posedge clk or negedge rst_n)begin
	if(!rst_n)
		y<=1'd0;
	else begin
		case(cur_stat)
			st0:begin
				if(!data) y<=1'd0;
				else 	y<=1'd1;
				end
			st1:y<=1'd0;
			st2:y<=1'd0;
			st3:y<=1'd0;
		endcase
	end
end

endmodule

testbench:

`timescale 1 ps/ 1 ps
module test_vlg_tst();

reg clk;
reg rst_n;
reg	[15:0]	data_t;

wire y;
wire data;

assign	data = data_t[15];                         
test i1 ( 
	.clk(clk),
	.rst_n(rst_n),
	.data(data),
	
	.y(y)
);
initial                                                
begin  
	rst_n = 0;
	#50 rst_n =1;
	#5000 $stop;
end        
                                                 
initial                                                
begin  
	clk=0;  forever #10 clk = ~clk;
end

always @(posedge clk or negedge rst_n)begin
	if(!rst_n)
		data_t <= 16'b1110_1010_1101_0011;
	else
		data_t <= (data_t << 1);
end

endmodule

仿真结果:
在这里插入图片描述
最基础的同步时序电路。

异步时序逻辑电路

窄脉冲捕获电路

在这里插入图片描述<

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值