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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于变换域的模版匹配

模板匹配原理 图像的空间域与其他域之间的变换&#xff0c;如傅里叶变换&#xff0c;小波变换&#xff0c;轮廓波变换&#xff0c;剪切波变换等&#xff0c;实际上是图像在其他坐标领域中的表现。在空间域中&#xff0c;图像的信息是像素值和坐标位置&#xff1b;在其他域中&a…

Spring之AOP源码(二)

书接上文 文章目录 一、简介1. 前文回顾2. 知识点补充 二、ProxyFactory源码分析1. ProxyFactory2. JdkDynamicAopProxy3. ObjenesisCglibAopProxy 三、 Spring AOP源码分析 一、简介 1. 前文回顾 前面我们已经介绍了AOP的基本使用方法以及基本原理&#xff0c;但是还没有涉…

【已解决】c语言const/指针学习笔记

本博文源于笔者正在复习const在左与在右&#xff0c;指针优先级、a,&a,*a的区别。 1、const在左与在右 int const *p const int *p int * const p int const * const p const int * const p* 在const右边&#xff0c;指向的数据不可以改变&#xff0c;可以改变地址 * 在c…

vue2使用 element表格展开功能渲染子表格

默认样式 修改后 样式2 <el-table :data"needDataFollow" border style"width: 100%"><el-table-column align"center" label"序号" type"index" width"80" /><el-table-column align"cent…

中仕公考:2024年度国考笔试分数公布,进面名单已出

2024年度考试录用公务员笔试成绩和合格分数线已经公布&#xff0c;考生们可以自行登录公务员专题网站查询成绩。 进面人员名单根据规定的面试比例&#xff0c;按照笔试成绩从高至低的顺序&#xff0c;1月14日已经公布进面名单。 没有进入面试人员名单的考生可以关注调剂&…

线性调频信号的解线调(dechirp,去斜)处理matlab仿真

线性调频信号的解线调 线性调频信号的回波模型参考信号去斜处理去斜处理傅里叶变换得到脉压结果解线调仿真总结 线性调频信号的回波模型 对于线性调频脉冲压缩雷达&#xff0c;其发射信号为&#xff1a; s ( t ) r e c t ( t T ) e x p ( j π μ t 2 ) \begin{equation} s(…

STM32——ADC知识总结及多通道采样实验

1.ADC概念 ADC&#xff0c;全称&#xff1a;Analog-to-Digital Converter&#xff0c;指模拟/数字转换器 2 STM32各系列ADC的主要特性 3.F4框图 4.转换序列与转换时间 A/D转换被组织为两组&#xff1a;规则组&#xff08;常规转换组&#xff09;和注入组&#xff08;注入…

PCL ISS关键点提取(C++详细过程版)

边界提取 一、概述二、代码实现三、结果展示PCL ISS关键点提取(C++详细过程版)由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、概述 ISS关键点提取在PCL里有现成的调用函数,具体算法原理和实现代码见:PCL ISS关键点提…

【Spring 篇】深入探索:Spring集成Web环境的奇妙世界

嗨&#xff0c;亲爱的小白们&#xff01;欢迎来到这篇有关Spring集成Web环境的博客。如果你曾对如何在Spring中构建强大的Web应用程序感到好奇&#xff0c;那么这里将为你揭示Web开发的神秘面纱。我们将用情感丰富、语句通顺的文字&#xff0c;以小白友好的方式&#xff0c;一探…

机器视觉系统选型-参数—景深

镜头在垂直方向上&#xff0c;能清晰成像的空间距离(清晰成像范围)&#xff0c;称为景深

定期推荐:PMO前沿每周讲座中的博弈论普及讲座

【圆桌第107期】博弈论与我们的工作生活 李彤老师【圆桌第107期】博弈论与我们的工作生活 李彤老师_哔哩哔哩_bilibili 推荐PMO前沿这个公众号&#xff0c;2年多来每天都大量的优秀管理文章&#xff0c;每周还请各行业的老师腾讯会议开讲&#xff0c;有视频回放&#xff0c;今天…