自学内容网 自学内容网

【Verilog学习日常】—牛客网刷题—Verilog快速入门—VL22

根据状态转移图实现时序电路

描述

某同步时序电路的状态转换图如下,→上表示“C/Y”,圆圈内现态,→指向次态

请使用D触发器必要的逻辑门实现此同步时序电路,用Verilog语言描述。

电路的接口如下图所示,C是单bit数据输入端。 

输入描述:

   input                C   ,
   input                clk ,
   input                rst_n

输出描述:

      output   wire        Y 

解题思路:

根据状态转换图画出功能表,如下所示:

其激励方程、状态方程和输出方程的判定方式与VL21一致;

代码如下:
`timescale 1ns/1ns

module seq_circuit(
   input                C   ,
   input                clk ,
   input                rst_n,
 
   output   wire        Y   
);
wire d0, d1, q0, q1;
//激励方程
assign d0 = q0&~C | ~q1&C;
assign d1 = q0&~C | q1&C;
//状态方程
DFF D0 (.d(d0), .clk(clk), .rst_n(rst_n), .q(q0));
DFF D1 (.d(d1), .clk(clk), .rst_n(rst_n), .q(q1));
//输出方程
assign Y = q0&q1 | q1&C;

endmodule

module DFF (
    input       d,
    input       clk,
    input       rst_n,

    output  reg    q
);

    always @(posedge clk or negedge rst_n) begin

        if (!rst_n) q <= 1'b0;
        else q <= d;
    end

endmodule


原文地址:https://blog.csdn.net/qq_44629558/article/details/142359649

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!