verilog编程题
verilog编程题
文章目录
- verilog编程题
- 序列检测电路(状态机实现)
- 分频电路
- 计数器
- 译码器
- 选择器
- 加减器
- 触发器
- 寄存器
序列检测电路(状态机实现)

module Detect_101(input clk,input rst_n,input data,output flag_101);parameter S0 = 0,S1 = 1,S2 = 2,S3 = 3;reg [1:0] state;always @(posedge clk or negedge rst_n)beginif(rst_n == 1'b0)beginstate <= S0;endelse begincase(state)S0: if(data == 1)state <= S1;else state <= S0;S1: if(data == 0)state <= S2;else state <= S1;S2:if(data == 1)state <= S3;else state <= S0;S3:if(data == 1)state <= S1;else state <= S2;default:state <=S0; endcaseend
endassign flag_101 = (state == S3)? 1'b1: 1'b0;endmodule
分频电路
采用触发器反向输出端连接到输入端的方式,可构成简单的 2 分频电路。
以此为基础进行级联,可构成 4 分频,8 分频电路。
按题目要求,几分频就留哪个。
module even_divisor# (parameter DIV_CLK = 10 )(input rstn ,input clk,output clk_div2,output clk_div4,output clk_div10);//2 分频reg clk_div2_r ;always @(posedge clk or negedge rstn) beginif (!rstn) beginclk_div2_r <= 'b0 ;endelse beginclk_div2_r <= ~clk_div2_r ;endendassign clk_div2 = clk_div2_r ;//4 分频reg clk_div4_r ;always @(posedge clk_div2 or negedge rstn) beginif (!rstn) beginclk_div4_r <= 'b0 ;endelse beginclk_div4_r <= ~clk_div4_r ;endendassign clk_div4 = clk_div4_r ;//N/2 计数reg [3:0] cnt ;always @(posedge clk or negedge rstn) beginif (!rstn) begincnt <= 'b0 ;endelse if (cnt == (DIV_CLK/2)-1) begincnt <= 'b0 ;endelse begincnt <= cnt + 1'b1 ;endend//输出时钟reg clk_div10_r ;always @(posedge clk or negedge rstn) beginif (!rstn) beginclk_div10_r <= 1'b0 ;endelse if (cnt == (DIV_CLK/2)-1 ) beginclk_div10_r <= ~clk_div10_r ;endendassign clk_div10 = clk_div10_r ;
endmodule
计数器
module Count
(input clk ,input rst_n ,output reg [ 3:0] cnt
);always @(posedge clk or negedge rst_n)beginif(!rst_n)cnt <= 4'd0;else if(cnt==4'd9)cnt <= 4'd0;elsecnt <= cnt + 1'b1;
endendmodule
译码器
`timescale 10ns/1ns
module decode3_8 (data_out,data_in,enable) ;
input [2:0] data_in;
input enable;
output [7:0] data_out;
reg [7:0] data_out;always @(data_in or enable)
beginif (enable==1)case (data_in )3'b000: data_out=8'b11111110;3'b001: data_out=8'b11111101;3'b010: data_out=8'b11111011;3'b011: data_out=8'b11110111;3'b100: data_out=8'b11101111;3'b101: data_out=8'b11011111;3'b110: data_out=8'b10111111;3'b111: data_out=8'b01111111;default: data_out=8'bxxxxxxxx;endcaseelsedata_out=8'b11111111;
endendmodule
选择器
代码为4选1,如果题目是2选1或者更多选1就case后进行更改
module mux_4_1 (input C, D, E, F,input [1:0] S,output reg Mux_out
);always @ (C or D or E or F or S) begincase(S)2'b00 : Mux_out = C;2'b01 : Mux_out = D;2'b10 : Mux_out = E;default : Mux_out = F;endcase
endendmodule
加减器
16位加减法器。当sub为1时,是减法;当sub为0时是加法。
看题目要求,有几位写几位
module top_module(input [31:0] a,input [31:0] b,input sub,output [31:0]sum);
wire [31:0]xor_1;
wire [15:0]sum_1;
wire [15:0]sum_2;
wire cout_1,cout_2;
//xor xor_gate(xor_1,b,sub);//逻辑或,我们这里的设计不应该是逻辑或,应该是下边的按位取或
assign xor_1 = b^{32{sub}} ;//按位异或
assign sum = {sum_2,sum_1};
add16 u1_add16(.a(a[15:0]),.b(xor_1[15:0]),.cin(sub),.sum(sum_1),.cout(cout_1));
add16 u2_add16(.a(a[31:16]),.b(xor_1[31:16]),.cin(cout_1),.sum(sum_2),.cout(cout_2));endmodule
触发器
带同步清0、同步置1的D触发器
module D_EF(q,qn,d,clk,set,reset)input d,clk,set,reset;output q,qn;reg q,qn;always @ (posedge clk)beginif(reset) begin q<=0;qn<=1;end//同步清0,高有效else if(set) begin q<=1;qn<=1;end //同步置1,高有效else begin q<=~d;qn<=~d;endend endmodule
寄存器
有异步清零端的n位寄存器,看题目要求,有几位n就写几
module regn(D,clk,reset,Q);parameter n=16;input [n-1] D;input clk,reset;output [n-1] reg Q;always @(negedge reset,posedge clk)if(!reset) //复位端reset低电平有效Q<=0;elseQ<=D;endmodule
相关文章:
verilog编程题
verilog编程题 文章目录 verilog编程题序列检测电路(状态机实现)分频电路计数器译码器选择器加减器触发器寄存器 序列检测电路(状态机实现) module Detect_101(input clk,input rst_n,input data,o…...
What is `addArgumentResolvers` does in `WebMvcConfigurer` ?
addArgumentResolvers 在SpringMVC框架中,主要用于向Spring容器注册自定义的参数解析器。在处理HTTP请求时,SpringMVC会使用这些参数解析器将请求中的数据(如查询参数、路径变量、表单数据等)转换并注入到控制器方法的参数中。 使…...
[NSSCTF Round#16 Basic]RCE但是没有完全RCE
RCE但是没有完全RCE wp 题目代码: 第一关 <?php error_reporting(0); highlight_file(__file__); include(level2.php); if (isset($_GET[md5_1]) && isset($_GET[md5_2])) {if ((string)$_GET[md5_1] ! (string)$_GET[md5_2] && md5($_GET[m…...
LTD营销枢纽(乐通达)成为杭州市中小企业数字化转型遴选服务商
为推进国家中小企业数字化转型城市试点建设,赋能中小企业信息化、智能化、新型工业化能力水平提升,杭州市经信局公开招募了具备高质量服务能力的中小企业数字化转型服务商。经过公开征集、专家评审等多个环节,LTD营销枢纽凭借其在数字化转型领…...
详细分析Mybatis中的<foreach>标签
目录 前言1. 基本语法2. Demo3. 实际例子 前言 对于Java专栏:Java专栏 对于Mybatis的相关知识可看我之前的文章:Mybatis从入门到精通(全) 对于其余Java框架可看我之前的文章:java框架 零基础从入门到精通的学习路线 附…...
linux-挂载Samba共享
linux-挂载Samba共享 1、linux服务器启动Samba共享服务 2、客户端电脑安装cifs-utils dnf install cifs-utils # 或 yum install cifs-utils3、挂载共享目录 # 创建挂目录 mkdir /share # 使用mount命令挂在共享目录,-t协议类型 -o用户名密码 共享目录访问地址 挂…...
Java入门IDEA基础语法
1:Java入门 1.1 Java简介 Java是什么: Java是一门非常优秀的计算机语言 语言:人与人交流沟通的表达方式 计算机语言:人与计算机之间进行信息交流沟通的一种特殊语言 Java之父:詹姆斯高斯林(James Gosli…...
【小白专用】C# 连接 MySQL 数据库
C# – Mysql 数据库连接 1. 配置环境 #前提:电脑已安装Mysql服务; Visual Studio 安装Mysql依赖库: 工具 -> NuGet 包管理器 -> 管理解决方案的 NuGet程序包 —> 搜索, 安装Mysql.Data (Oracle); (安装成功后&…...
Django登录注销视图
Django在身份验证框架中包含了一些你可以直接使用的表单和视图。在大多数情况下,可以使用默认的Django认证视图。 Django在django.contrib.auth.views提供了以下基于类的视图来处理身份验证: LoginView:处理登录表单并登录用户 LogoutView&a…...
云原生到底是什么意思
云原生到底是什么意思? 引言 随着云计算技术的迅速发展,云原生成为了一个备受关注的话题。云原生不仅仅是一种新的软件架构,更是一种变革性的开发方法论。本文将深入解析云原生的意义、特点以及为什么它在现代软件开发中变得如此重要。 云…...
【银行测试】银行项目,信用卡业务测试+常问面试(三)
目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 银行测试-信用卡业…...
AI大模型学习笔记之二:什么是 AI 大模型的训练和推理?
在人工智能(AI)的领域中,我们经常听到训练(Training) 和 推理(Inference) 这两个词汇,它们是构建强大 AI 模型的关键步骤。我们通过类比人类的学习过程来理解这两个概念,可以更加自然而生动地理…...
【MATLAB源码-第113期】基于matlab的孔雀优化算法(POA)机器人栅格路径规划,输出做短路径图和适应度曲线。
操作环境: MATLAB 2022a 1、算法描述 POA(孔雀优化算法)是一种基于孔雀羽毛开屏行为启发的优化算法。这种算法模仿孔雀通过展开其色彩斑斓的尾羽来吸引雌性的自然行为。在算法中,每个孔雀代表一个潜在的解决方案,而…...
iphone 5s的充电时序原理图纸,iPAD充电讲解
上一篇写了iphone 5的时序。那是电池供电的开机时序。iphone 5s也是差不多的过程,不说了。现在看iphone5s手机充电时候的时序。iphone5s充电比iphone5充电简单了很多。 首先是usb接口接到手机上,usb线连接到J7接口上。J7接口不只是接usb,还能…...
react基础入门
1,了解react react并不是一个MVC框架,他只是一个很强大的javaScript库,主要作用是用来构建UI界面。 react的核心是封装一个个大大小小的组件(小到一个按钮,大到一个页面)来构建复杂的UI界面,每…...
spring boot学习第八篇:通过spring boot、jedis实现秒单
参考:Redis实现分布式锁的7种方案 - 知乎 1、 准备数据库表,如下SQL表示库存表,有主键ID和库存数量字段 CREATE TABLE t_stock (id bigint(20) NOT NULL AUTO_INCREMENT,quantity bigint(20) NOT NULL,PRIMARY KEY (id) ) ENGINEInnoDB DEF…...
NineAi 新版AI系统网站源码 ChatGPT
简介: Nine AI.ChatGPT是基于ChatGPT开发的一个人工智能技术驱动的自然语言处理工具,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,真正像人类一样来聊天交流,甚至能完成撰写邮件、视频脚本、文案、翻译、代码,写论文等任务。 NineAi 新版A…...
开源监控服务一瞥:Prometheus、Grafana、Zabbix、Nagios、Icinga和Open-Falcon
前言 随着信息技术的发展,监控服务在维护系统稳定性和性能方面变得越来越重要。本文将比较一些流行的开源监控服务,以帮助你选择适合你需求的解决方案。 监控服务对比 监控服务特点优势不足性能扩展性安全性Prometheus- 多维度数据模型- 监控容器化环…...
使用WAF防御网络上的隐蔽威胁之扫描器
在网络安全领域,扫描器是用于侦察和识别网络系统漏洞的工具。 它们可以帮助网络管理员识别安全漏洞,也可能被攻击者用来寻找攻击目标。 扫描器的基本概念 定义:扫描器是一种自动化工具,用于探测网络和服务器中的漏洞、开放端口、…...
企业信息安全管理制度
随着信息化程度的日益推进,企业信息的脆弱性也日益暴露。如何规范日趋复杂的信息安全保障体系建设,如何进行信息风险评估保护企业的信息资产不受侵害,已成为当前行业实现信息化运作亟待解决的问题。 一、企业的信息及其安全隐患 在我公司&am…...
ES6从入门到精通:前言
ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var…...
Leetcode 3576. Transform Array to All Equal Elements
Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到…...
React Native 导航系统实战(React Navigation)
导航系统实战(React Navigation) React Navigation 是 React Native 应用中最常用的导航库之一,它提供了多种导航模式,如堆栈导航(Stack Navigator)、标签导航(Tab Navigator)和抽屉…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
【AI学习】三、AI算法中的向量
在人工智能(AI)算法中,向量(Vector)是一种将现实世界中的数据(如图像、文本、音频等)转化为计算机可处理的数值型特征表示的工具。它是连接人类认知(如语义、视觉特征)与…...
实现弹窗随键盘上移居中
实现弹窗随键盘上移的核心思路 在Android中,可以通过监听键盘的显示和隐藏事件,动态调整弹窗的位置。关键点在于获取键盘高度,并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
智能分布式爬虫的数据处理流水线优化:基于深度强化学习的数据质量控制
在数字化浪潮席卷全球的今天,数据已成为企业和研究机构的核心资产。智能分布式爬虫作为高效的数据采集工具,在大规模数据获取中发挥着关键作用。然而,传统的数据处理流水线在面对复杂多变的网络环境和海量异构数据时,常出现数据质…...
如何更改默认 Crontab 编辑器 ?
在 Linux 领域中,crontab 是您可能经常遇到的一个术语。这个实用程序在类 unix 操作系统上可用,用于调度在预定义时间和间隔自动执行的任务。这对管理员和高级用户非常有益,允许他们自动执行各种系统任务。 编辑 Crontab 文件通常使用文本编…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
