牛客网Verilog刷题——VL47

news2024/11/16 16:00:40

牛客网Verilog刷题——VL47

  • 题目
  • 答案

题目

  实现4bit位宽的格雷码计数器。 电路的接口如下图所示:

在这里插入图片描述
  输入输出描述:

信号类型输入/输出位宽描述
clkwireIntput1时钟信号
rst_nwireIntput1异步复位信号,低电平有效
gray_outregOutput4输出格雷码计数

   注意:牛客中很多题目与答案不符,本题要求设计一个格雷码计数器,没有说明具体设计要求。实际上本题的设计要求是:初始化格雷码计数器输出为0值,然后将格雷码转为二进制码,然后二进制码计数器加以后再转为格雷码进行输出,要求格雷码计数器输出两个时钟周期发生一次变化。所以格雷码计数器设计中应该包含三个部分:格雷码转二进制、二进制计数器、二进制转格雷码。

答案

`timescale 1ns/1ns

module gray_counter(
   input   clk,
   input   rst_n,

   output  reg [3:0] gray_out
);

genvar i;
reg [3:0]  bin_cnt ; //二进制计数器
wire [3:0] gray2bin; //格雷码转二进制

//格雷码转二进制
generate
    for (i=0; i<=3; i=i+1) begin: gray2bin_block
        if (i==3)
            assign gray2bin[i] = gray_out[i];
        else
            assign gray2bin[i] = gray_out[i] ^ gray2bin[i+1];
    end
endgenerate

//二进制计数器
always @(posedge clk or negedge rst_n)
    if(!rst_n)
        bin_cnt <= 4'd0;
    else
        bin_cnt <= gray2bin + 1'b1;

//二进制转格雷码
always @(posedge clk or negedge rst_n)
    if(!rst_n)
        gray_out <= 4'd0;
    else
        gray_out <= bin_cnt ^ (bin_cnt>>1);

//备注:本题实际上要求的是初始化格雷码输出为0值,然后将格雷码转为二进制码,二进制码加一,
//      然后再转为格雷码输出,所以应该包括三个部分:格雷码转二进制、计数器和二进制转格雷码

endmodule

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/814795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

管理ceph集群

文章目录 ceph的常用命令查看集群状态查看pg的状态查看mon节点状态查看osd的通用命令查看osd的容量查看osd池写入文件测试查看池的属性查看文件映射过程 添加磁盘删除磁盘 ceph的常用命令 查看集群状态 ceph osd pool application enable pool-name rbd #将池启用rbd功能 ceph…

Java集合框架-List、Set、Map

一、Java集合框架概述&#xff1a; 1.1 Collection接口继承树 JDK提供的集合API位于java.util包内。 Map接口继承树 1.2 Collection接口方法 Collection 接口 Collection 接口是 List、Set 和 Queue 接口的父接口&#xff0c;该接口里定义的方法既可用于操作 Set 集合&#…

Matlab进阶绘图第24期—悬浮柱状图

悬浮柱状图是一种特殊的柱状图。 与常规柱状图相比&#xff0c;悬浮柱状图可以通过悬浮的矩形展示最小值到最大值的范围&#xff08;或其他范围表达&#xff09;&#xff0c;因此在多个领域得到应用。 本文使用自己制作的Floatingbar小工具进行悬浮柱状图的绘制&#xff0c;先…

【Linux】Linux项目自动化构建工具 make/Makefile

目录 1. Makefile 是如何工作的 2. 依赖关系与依赖方法 3. .PHONY 4. Makefile 的特殊符号 写在最后&#xff1a; 1. Makefile 是如何工作的 make 是一个命令。 Makefile 是一个文件&#xff0c;当前目录下的一个文件。 我们先来上手写一个简单的 Makefile 文件&#…

火山引擎AB测试:广告实验深度打通巨量引擎,高效测试广告素材

更多技术交流、求职机会&#xff0c;欢迎关注字节跳动数据平台微信公众号&#xff0c;回复【1】进入官方交流群 近期&#xff0c;火山引擎AB测试DataTester上线了新版的广告AB实验&#xff0c;还推出了与巨量引擎深度打通的能力。用户可以在DataTester中直接进行广告落地页的创…

机器学习:异常检测

问题定义 anomaly&#xff0c;outlier&#xff0c; novelty&#xff0c; exceptions 不同的方法使用不同的名词定义这类问题。 应用 二分类 假如只有正常的数据&#xff0c;而异常的数据的范围非常广的话&#xff08;无法穷举&#xff09;&#xff0c;二分类这些不好做。另外就…

没钱,没人,没IT,如何成功进行数字化转型?

在数字化时代的浪潮下&#xff0c;技术的迅猛发展为企业和个人带来了前所未有的机遇和挑战。然而&#xff0c;传统的软件开发过程通常需要大量的编程工作&#xff0c;对于非技术背景的人士而言&#xff0c;这是一座高不可攀的技术门槛。如何能够快速地实现创新&#xff0c;推动…

YAML+PyYAML笔记 9 | PyYAML源码之dump(),dump_all(),safe_dump(),yaml.YAMLObject

9 | PyYAML源码之emit&#xff0c;dump&#xff0c;safe_dump&#xff0c;yaml.YAMLObject 1 yaml.dump()2 yaml.dump()3 yaml.safe_dump4 yaml.YAMLObject 1 yaml.dump() 源码&#xff1a; 作用&#xff1a; 将Python对象序列化为YAML流。如果stream为None&#xff0c;则返…

无涯教程-jQuery - Tooltip组件函数

小部件工具提示功能可与JqueryUI中的小部件一起使用。Tooltip用于显示提示。 Tooltip - 语法 $( document ).tooltip(); Tooltip - 示例 以下是显示工具提示用法的简单示例- <!doctype html> <html lang"en"><head><meta charset"utf…

【腾讯云 Cloud Studio 实战训练营】在Cloud Studio上使用React实现学生管理系统

一、前言 为了提升办公效率&#xff0c;越来越多的人开始使用云工作站的方法进行“云办公”了&#xff0c;所谓云办公即把传统意义办公场所转移到网络浏览器中&#xff0c;这样做的好处有&#xff1a; 实现真正的移动化办公&#xff0c;不再受设备、时间、地点等的束缚&#…

最近写了10篇Java技术博客【SQL和画图组件】

&#xff08;1&#xff09;Java获取SQL语句中的表名 &#xff08;2&#xff09;Java SQL 解析器实践 &#xff08;3&#xff09;Java SQL 格式化实践 &#xff08;4&#xff09;Java 画图 画图组件jgraphx项目整体介绍&#xff08;一&#xff09; 画图组件jgraphx项目导出…

Java版知识付费 Spring Cloud+Spring Boot+Mybatis+uniapp+前后端分离实现知识付费平台免费搭建

提供职业教育、企业培训、知识付费系统搭建服务。系统功能包含&#xff1a;录播课、直播课、题库、营销、公司组织架构、员工入职培训等。 提供私有化部署&#xff0c;免费售后&#xff0c;专业技术指导&#xff0c;支持PC、APP、H5、小程序多终端同步&#xff0c;支持二次开发…

VsCode与Idea编辑器更换背景图

目录 VsCode Idea VsCode 需要安装background插件 安装完成后&#xff0c;打开设置&#xff0c;搜索background 然后就可以在json文件进行图片设置&#xff0c;透明度等等 Idea 打开File -> Settings 然后找到Appearance &#xff0c; 往下滑&#xff0c;找到BackGround …

Android studio实现Button界面跳转

本教程以界面MainActivity跳转到TwoActivity为例 MainActivity对应layout&#xff1a;R.layout.activity_main TwoActivity*对应layout&#xff1a;R.layout.twolayout 1. 建立MainActivity的java文件 package com.example.myapplication;//界面跳转 所需头文件 import andro…

在人工智能的浪潮下,汽车自动驾驶的新发展新可能

原创 | 文 BFT机器人 相信生活在21世纪的人们&#xff0c;没有人会不知道什么是人工智能。如果你不知道&#xff0c;那么你就是被现社会甩在了身后。人工智能从出现到现在&#xff0c;经历了60年的发展&#xff0c;而如今人工智能更如一股大浪潮&#xff0c;席卷了全国各地&am…

Keil5芯片pack包官网下载与安装

1.进入官网 ARM Keil官网链接&#xff1a;https://www.keil.arm.com/ 2.进入CMSIS Packs中选择需要的pack包 输入需要的芯片型号后回车能显示出所有相关型号&#xff0c;或者在输入栏下方列表中查找&#xff1a; 3.下载所需的安装包 找到所需安装包后&#xff0c;右键在…

kernel32.dll如何修复,快速解决kernel32.dll缺失的方法

Kernel32.dll是Windows操作系统中一个重要的系统文件&#xff0c;对于系统的正常运行至关重要。然而&#xff0c;由于各种原因&#xff0c;用户可能会遇到kernel32.dll文件的缺失问题。今天小编就来给大家详细的介绍一下kernel32.dll这个文件&#xff0c;并且详细的介绍一下ker…

[计算机入门] 回收站

2.10 回收站 回收站是Windows 操作系统中一个特殊的文件夹&#xff0c;通常在桌面上以图标的形式表示。 回收站主要作用是为了保护用户的数据免于被意外删除。使用回收站后用户可以避免错误地彻底删除文件&#xff0c;也可以从回收站中恢复它们。如果没有回收站&#xff0c;在…

vue2.x通过指令实现v-debounce和v-throttle防抖节流的实现,亲测可用。

在vue2.x中&#xff0c;防抖和节流一般是通过引入防抖函数debounce和节流函数throtte&#xff0c;对事件回调进行一层包裹&#xff0c;然后在模板中绑定包裹后的事件回调&#xff0c;这样每个需要用的地方都需要进行防抖&#xff0c;节流函数的导入&#xff0c;事件回调的包裹&…

集成kisso框架springboot解决登录不了问题

前端使用 VUE 框架&#xff0c;要求请求头中传入 token值&#xff0c;获取设置token使用cookie操作 import Cookies from js-cookieconst TokenKey token-c export function getToken() {return Cookies.get(TokenKey) } export function setToken(token) {Cookies.set(Token…