Verilog 层次化文件设计——彩灯控制器

2023-11-04

Verilog 层次化文件设计是通过顶层文件+调用的子模块来完成代码功能的实现。这里的顶层文件可以理解为是实体电路中的连线步骤,而子模块就是电路元件。本文采用文本形式编写顶层文件。
层次化文件设计示例
设置顶层文件先打开文件界面显示所有文件,再选择你要设置为顶层文件的文件。
在这里插入图片描述
选中后右键点击set as Top-Level Entity即可
在这里插入图片描述

顶层文件

module cdkzq(clk,en,Q,codeout); //彩灯控制器
input clk,en;
output [2:0] Q;  //计数器输出
output [6:0] codeout;  //译码器输出
zsr_4253_2_1 a(clk,en,Q);  //调用计数器子模块
zsr_4253_2_2 b(Q,codeout); //调用译码器子模块
endmodule

计数器子模块

module jsq(clk,en,Q);//计数器
input clk,en;   //输入时钟和使能
output reg[2:0] Q;  //计数器输出
always@(posedge clk) //时钟上升沿执行
begin
	if(en == 1'b1)  //使能端处于高电平自加
	begin
		if(Q < 3'd6)
		Q <= Q + 1'b1;
		else
		Q <= 0;
		end
		else
		Q <= Q;  
end
endmodule

译码器子模块

module zsr_4253_2_2(Q,codeout); //译码器
input [2:0]Q;  //译码器输入接收计数器输出
output reg[6:0]codeout; //译码器输出
always@(Q)
begin
	case(Q)
	3'd0:codeout <= 7'b000_0001;  //Q为0	点亮a管
	3'd1:codeout <= 7'b000_0010;  //Q为1	点亮b管
	3'd2:codeout <= 7'b000_0100;	//Q为2	点亮c管
	3'd3:codeout <= 7'b000_1000;	//Q为3	点亮d管
	3'd4:codeout <= 7'b001_0000;	//Q为4	点亮e管
	3'd5:codeout <= 7'b010_0000;	//Q为5	点亮f管
	3'd6:codeout <= 7'b000_0000;	//Q为6	不亮
	default:codeout <=7'b000_0000;
	endcase
end
endmodule
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Verilog 层次化文件设计——彩灯控制器 的相关文章

  • Spartan-3E 上的随机数生成

    我需要在 Spartan 3E FPGA 上为我的遗传算法生成伪随机数 并且我想在 verilog 中实现它 您能给我任何关于此的指示吗 当然 Adam 的随机生成器是不可合成的 您必须显式创建一个LFSR 以下示例可能会有所帮助 它是一个
  • 带有always_comb结构的Systemverilog问题

    我对这个 SystemVerilog 代码有疑问 这是代码 module mult multiplicand multiplier Product clk clear Startm endm input 31 0 multiplicand
  • 如何使用触发器输出作为复位信号的输入

    我在柜台里放了 3D 触发器 一旦达到 5 101 我想将 FF 复位输入设置为高 使用或门 复位为低电平有效 这几乎可以工作 但是 当我最初运行程序时 触发器的 Q 输出都是未知的 因此 最初 或门的复位输入为低电平 但是 因为一开始 Q
  • 简单赋值时不输出期望值

    当我将一些值分配给具有四位的变量时 当我简单地输出该值时 我会得到意想不到的结果 我以前从未见过这个 想知道我是否在语法上做错了什么 module main reg 3 0 x initial begin monitor b x x 001
  • 「Verilog学习笔记」游戏机计费程序

    专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点 刷题网站用的是牛客网 timescale 1ns 1ns module game count input rst n 异位复位信号 低电平有效 input clk 时
  • 用于 Verilog 或 SystemVerilog 的 TAP(测试任何协议)模块

    是否有 TAP 测试任何协议 http testanything org Verilog 的实现 那就太好了 因为这样我就可以使用证明来自动检查我的结果 更新 10 9 09 有人问为什么不使用断言 部分 TAP 为我提供了一些很好的报告
  • Verilog 最佳实践 - 递增变量

    我绝不是 Verilog 专家 我想知道是否有人知道这些增加值的方法中哪一种更好 抱歉 如果这个问题太简单了 Way A 在组合逻辑块中 可能在状态机中 some condition count next count 1 然后在一个连续块中
  • 将枚举转换为逻辑

    考虑以下模块声明 module DFF d q CLK RESET parameter W 2 input W 1 0 d input CLK input RESET output logic W 1 0 q endmodule 当 d 和
  • 在逻辑中使用单端端口期待差异对?

    我使用的逻辑被设置为需要一个差分对时钟端口 然而 对于一个特定的应用程序 我只能输入一个单端时钟 由于硬件限制 修改逻辑以接受单端时钟不是一种选择 因为涉及许多文件和代码行 有没有办法可以输入单端端口并以某种方式将其馈送到模块的差异对端口
  • Verilog 错误:必须连接到结构网络表达式

    我收到错误 output or inout port Qout must be connected to a structural net expression 我评论了下面代码中发生错误的行 代码被修剪 压缩 我搜索了答案 似乎我无法将输
  • 从测试台访问 uvm_config_db 的最佳方式?

    我想在我的顶级测试平台中创建一个时钟 其周期可以通过测试进行控制 我所做的是将周期设置到 uvm config db 中并将其返回到测试台中 我必须输入 1 以确保构建阶段已完成 否则 get 返回错误值 module testbench
  • 在 Mac OS X 10.6.8 上用什么来编译和模拟 Verilog 程序?

    作为教学大纲的一部分 我需要模拟 Verilog 程序 但是 我的大学使用 Xilinx ISE 但它不适用于 Mac 因此 请帮助我提供最好的软件以及有关如何安装和使用它们的一些详细步骤 你可以尝试伊卡洛斯 Verilog http iv
  • 向左旋转 verilog 大小写

    我的任务是用verilog编写一个16位ALU 当我做需要旋转操作数和进行2的补码加法和减法的部分时 我发现了困难 我知道如何用纸和铅笔解决这个问题 但我无法弄清楚如何在 Verilog 中做到这一点 例如 A表示为a15 a14 a13
  • 如何在 Verilog 中推断 Block RAM

    我在一个项目中遇到了一个非常具体的问题 这个问题已经困扰我好几天了 我有以下 RAM 模块的 Verilog 代码 module RAM param clk addr read write clear data in data out pa
  • Verilog 按位或 ("|") 单子

    我见过 Verilog 代码 其中使用了按位或运算符 目的是什么 例如 address 15 14 0 or address 15 14 io din ramrd 不能省略 吗在这些情况下 在这种情况下 它充当归约运算符 例如 4 b100
  • Verilog 数组语法

    我是 Verilog 新手 并且遇到了很多麻烦 例如 我想要一个包含八个单元的数组 每个单元都是 8 位宽 以下不起作用 reg 7 0 transitionTable 0 7 assign transitionTable 0 10 仅仅做
  • 模块不是任务或 void 函数

    我正在尝试在 Verilog 中创建一个用于进位选择加法器的模块 除了以下部分导致编译错误之外 一切正常 module csa a b s cout input 15 0 a b output 15 0 s output cout wire
  • Verilog:如何取绝对值

    在 verilog 中 我有一个二进制值数组 如何取减去值的绝对值 Verilog代码 module aaa clk input clk reg 7 0 a 1 9 reg 7 0 s 1 9 always posedge clk begi
  • 仿真输出全为零

    我的设计模块和测试平台代码已编译 但是 当我模拟时 我没有得到正确的输出 谁能告诉我我的代码哪里出了问题 这是测试平台的代码 module testbench reg 511 0 FROM LS reg CLK reg 63 0 TO IF
  • 如何迭代创建参数化大小的总线来连接同样迭代创建的模块?

    我正在尝试使用组合逻辑方法在 verilog 中创建乘法器模块 以便不涉及时钟 我希望模块有一个通用的定义 即我希望乘法器分别接收大小为 M 和 N 位的两个因子 并返回大小为 M N 位的乘积 基本思想是计算部分积的和 每个部分积根据其级

随机推荐

  • CentOS7下python开发环境配置

    https blog csdn net nicomy2018 article details 78617976 configure prefix usr local
  • 内网DNS域名解析 blocky服务

    此片文章为DNS内网解析部署文档 简单实用 解决企业内部web服务IP地址访问问题 企业内部如果不启用域名DNS服务 服务器就只能通过IP进行访问了 除了传统的bind解决方案 推荐一个新的DNS解决方案 blocky blocky 的Gi
  • Oracle listagg去重distinct的三种方式总结

    一 简介 最近在工作中 在写oracle统计查询的时候 遇到listagg聚合函数分组聚合之后出现很多重复数据的问题 于是研究了一下listagg去重的几种方法 以下通过实例讲解三种实现listagg去重的方法 二 方法 首先还原lista
  • 封装继承多态理解

    1 封装的概念 在面向对象中封装是指隐藏对象的属性和实现的细节 仅对外提供公共访问方式 是一种信息隐藏技术 在java c 中通过关键字private protected和public实现封装 封装实际上使用方法将类的数据隐藏起来 控制用户
  • 【python之经验模态分解EMD实现】PyEMD库的安装和导入EMD, Visualisation问题解决方法[完整可运行]

    现有的导入问题 目前网上的办法 直接导入 from PyEMD import EMD Visualisation 是有问题的 可能会出现 在 init py init py 中找不到引用 Visualisation 的报错 原因似乎是现在导
  • Handler相关知识点

    目录 一 主线程为什么没有被loop阻塞 二 Message对象创建的方式有哪些 区别 三 一个线程可以有几个Handler 几个Looper 几个MessageQueue对象 四 Handler导致的内存泄露原因及其解决方案 五 子线程中
  • 如何写一篇给天使投资人看的《商业计划书》?

    转自 https www sohu com a 164233213 259030 笔者遇到过形形色色的创业者 总体来说 创业者要么把写商业计划书想的太简单 要么就是想得太难 很少有创业者去实实在在地了解商业计划书的写法和内在逻辑 1 商业计
  • 分享一个Xshell注册码

    Xshell简单介绍 百度 Xshell 1 是一个强大的安全终端模拟软件 它支持SSH1 SSH2 以及Microsoft Windows 平台的TELNET 协议 Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助
  • http和缓存有关的状态码

    200 OK from cache 是浏览器没有跟服务器确认 直接用了浏览器缓存 而 304 Not Modified 是浏览器和服务器多确认了一次缓存有效性 再用的缓存 200 from cache 是速度最快的 因为不需要访问远程服务器
  • 求一个向量变换为另一个向量的矩阵_线性代数32——线性变换及对应矩阵

    线性变换这个词在线性代数中经常被提及 每个线性变换的背后都有一个矩阵 矩阵的概念比较直观 相比之下 线性变换就显得抽象了 抛开矩阵 我们从变换的角度讨论投影 通过T变换 使平面内的一个向量投影到一条直线上 T就像一个函数 给定一个输入向量
  • EasyGBS国标GB28181视频平台添加针对H.265视频流的告警信息

    EasyGBS国标视频云服务支持设备 平台通过国标GB28181协议注册接入 可实现视频的实时监控直播 录像 检索与回看 语音对讲 云存储 告警 平台级联等功能 平台支持将接入的视频流进行全终端 全平台分发 分发的视频流包括RTSP RTM
  • 基于深度学习的服装图像分类与检索

    摘要 面对海量的服装图像数据 如果使用人工进行服装图像的语义属性标注以用于分类和检索 则需要花费大量的人力和时间 而且语义属性并不能完全表达服装图像中的丰富信息 造成检索效果不佳 针对服装图像对多个属性同时进行分类和识别的要求 构建了基于多
  • iOS证书添加设备UDID,运行自定义基座(图文)

    登录苹果开发者账户 Apple Developer 进入账户 进入第二项证书设置 选择设备设置 点击添加新设备 在这里填写设备信息 注册新设备 在这里查看自己的证书 点击对应证书 进入证书页面 点击右边蓝色编辑按钮 选择对应设备 注册的新设
  • ubuntu下使用yocto制作龙芯文件系统

    一 下载yocto代码 poky下载得到poky openembedded配方下载得到meta openembedded目录 MIPS架构配方下载得到meta img目录 git clone git git yoctoproject org
  • 第97天学习打卡(Spring Boot 初识Spring Boot)

    微服务阶段 javase OOP mysql 持久化 html css js jquery 框架 视图 框架不熟练 css不好 javaweb 独立开发MVC三层架构的网站 原始 ssm 框架 简化了我们的开发流程 配置也开始较为复杂 wa
  • Java中if-else和switch-case

    计算机的任何简单或复杂的程序都可以由三种基本结构组成 顺序结构 按照程序编写的顺序 从上到下依次执行 选择结构 根据某个条件进行判断后 选择其中一个分支执行 循环结构 反复执行某个或某些操作 直到条件为假时才停止循环 条件判断结构 1 if
  • CSS命名规范——BEM思想(非常赞的规范)

    人们问我最多的问题之一是在CSS类名中 和 是什么意思 它们的出现是源于BEM和Nicolas Gallagher BEM的意思就是块 block 元素 element 修饰符 modifier 是由Yandex团队提出的一种前端命名方法论
  • 软件研发过程中的5种最常见的图

    一 背景 软件研发过程中 我们常有如下的困惑 有时我们需要设计一个较大型的业务系统 或者做一个开源项目 我们该如何将这个系统的整体功能 逻辑细节一层层描述清楚呢 我们接手了一个大型复杂的系统 该如何一点点从宏观到微观的去梳理整个功能流转的脉
  • Apache APISIX Dashboard 任意命令执行批量编写工具

    Apache APISIX Dashboard远程命令执行漏洞 CVE 2021 45232 漏洞描述 Apache APISIX 是一个动态 实时 高性能的 API 网关 提供负载均衡 动态上游 灰度发布 服务熔断 身份认证 可观测性等丰
  • Verilog 层次化文件设计——彩灯控制器

    Verilog 层次化文件设计是通过顶层文件 调用的子模块来完成代码功能的实现 这里的顶层文件可以理解为是实体电路中的连线步骤 而子模块就是电路元件 本文采用文本形式编写顶层文件 设置顶层文件先打开文件界面显示所有文件 再选择你要设置为顶层