当前位置: 首页 > news >正文

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

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

描述

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

电路的接口如下图所示。

输入描述:

      input                A   ,
      input                clk ,
      input                rst_n

输出描述:

      output   wire        Y  

解题思路:

①首先根据题干中的状态转换表,给出次态Q_1^{n+1},Q_0^{n+1}和输出Y的卡诺图,如下所示:

表达式为Q_1^{n+1}=Q_1^{n+1}\oplus Q_0^n \oplus A,Q_0^{n+1}=\overset{-}{Q_0^n},其中:

输出方程Y=Q_0^nQ_1^n

由于题干中所使用的触发器为D触发器,根据D触发器的特征方程Q_1^{n+1} = D_1, Q_0^{n+1} = D_0,得到其状态方程;

因此,激励方程D_1=Q_1^{n+1}\oplus Q_0^n \oplus A,D_0=\overset{-}{Q_0^n};

代码:

下面给出两种代码:

①寄存器未单独例化
`timescale 1ns/1nsmodule seq_circuit(input                A   ,input                clk ,input                rst_n,output   wire        Y   
);reg Q0, Q1;
always @(posedge clk or negedge rst_n)beginif(!rst_n)Q0 <= 1'b0;elseQ0 <= ~Q0 ;
end always @(posedge clk or negedge rst_n)beginif(!rst_n)Q1 <= 1'b0;elseQ1 <= Q1 ^ Q0 ^ A;
endassign Y = Q1 & Q0;endmodule
②将寄存器单独例化
`timescale 1ns/1nsmodule seq_circuit(input                A   ,input                clk ,input                rst_n,output   wire        Y   
);//代码二
wire q0, q1, d0, d1;
//激励方程
assign d0 = ~q0;
assign d1 = A ^ q0 ^ q1;
//状态方程
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;endmodule//带复位端的D触发器
module DFF(input        d, input        clk, input        rst_n,output   reg q);always @(posedge clk or negedge rst_n) beginif (!rst_n) q<= 1'b0;else q<= d; end
endmodule

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • cmake--get_filename_component
  • 常见的HTTP请求头和示例说明
  • 96 kHz、24bit 立体声音频ADC芯片GC5358描述
  • 分布式系统的概念与设计模式
  • 【Kubernetes】常见面试题汇总(二十五)
  • nestjs cache manager 很ioredis配合使用方案
  • 政安晨【零基础玩转各类开源AI项目】基于本地Linux Ubuntu系统部署及应用DDSP-SVC:基于DDSP(可微分数字信号处理)的实时端到端歌声转换系统
  • 操作系统迁移(CentOs -> Ubuntu)
  • 先导小型五轴数控加工中心助力职业教育
  • 数据结构和算法之线性结构
  • C++中模板的初级使用函数模板(刚刚接触模板概念的小白也能明白)
  • 基于python+django+vue的影视推荐系统
  • 【Kubernetes】常见面试题汇总(十七)
  • 【计算机网络】第一章
  • 容器内的Nodejs应用如何获取宿主机的基础信息-系统、内存、cpu、启动时间,以及一个df -h的坑
  • 网络传输文件的问题
  • 【5+】跨webview多页面 触发事件(二)
  • Javascript 原型链
  • JS字符串转数字方法总结
  • laravel with 查询列表限制条数
  • node入门
  • spark本地环境的搭建到运行第一个spark程序
  • V4L2视频输入框架概述
  • 解决iview多表头动态更改列元素发生的错误
  • 云大使推广中的常见热门问题
  • 再谈express与koa的对比
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • Spring第一个helloWorld
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • # C++之functional库用法整理
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (2020)Java后端开发----(面试题和笔试题)
  • (4)事件处理——(6)给.ready()回调函数传递一个参数(Passing an argument to the .ready() callback)...
  • (javaweb)Http协议
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (精确度,召回率,真阳性,假阳性)ACC、敏感性、特异性等 ROC指标
  • (亲测有效)推荐2024最新的免费漫画软件app,无广告,聚合全网资源!
  • (图文详解)小程序AppID申请以及在Hbuilderx中运行
  • (新)网络工程师考点串讲与真题详解
  • (译)2019年前端性能优化清单 — 下篇
  • (原創) 如何安裝Linux版本的Quartus II? (SOC) (Quartus II) (Linux) (RedHat) (VirtualBox)
  • (转贴)用VML开发工作流设计器 UCML.NET工作流管理系统
  • (转载)Linux 多线程条件变量同步
  • .net dataexcel 脚本公式 函数源码
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET 将多个程序集合并成单一程序集的 4+3 种方法
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .net下简单快捷的数值高低位切换
  • .NET序列化 serializable,反序列化
  • /etc/shadow字段详解
  • /var/spool/postfix/maildrop 下有大量文件