题意整理
本题要求根据时序电路的状态表实现同步时序电路,要求使用D触发器。
题解主体
基础的时序电路设计,可采用列激励方程、输出方程,进而用D触发器和组合逻辑电路实现的方案。
由状态表可得出,电路共4个状态,所以使用2个寄存器来实现状态的寄存。两个寄存器的输出为Q1和Q0。
由状态转换表可列出激励方程如下:
输出方程如下:
表中的Qn表示现态,Qn+1表示次态
根据激励方程和输出方程以及思路整理,关键电路如下:
将电路转换成Verilog代码描述如下:
reg Q1 ; reg Q0 ; always @(posedge clk or negedge rst_n)begin if(!rst_n) Q1 <= 1'b0; else Q1 <= Q1 ^ Q0 ^A; end always @(posedge clk or negedge rst_n)begin if(!rst_n) Q0 <= 1'b0; else Q0 <= ~Q0; end assign Y = Q1 & Q0;
参考答案
`timescale 1ns/1ns module seq_circuit( input A , input clk , input rst_n, output wire Y ); reg Q1 ; reg Q0 ; always @(posedge clk or negedge rst_n)begin if(!rst_n) Q1 <= 1'b0; else Q1 <= Q1 ^ Q0 ^A; end always @(posedge clk or negedge rst_n)begin if(!rst_n) Q0 <= 1'b0; else Q0 <= ~Q0; end assign Y = Q1 & Q0; endmodule