Verilog零基础入门(边看边练与测试仿真)-时序逻辑-笔记(4-6讲)

文章目录

  • 第四讲
  • 第五讲
  • 第六讲

第四讲

1、计数器
在这里插入图片描述
代码:

//计数器
`timescale 1ns/10ps
module counter(clk,res,y);
input           clk;
input           res;
output[7:0]     y;reg[7:0]        y;
wire[7:0]        sum;//+1运算的结果(1)
assign           sum=y+1;//组合逻辑部分(2)always@(posedge clk or negedge res)
if(~res) beginy<=0;
end
else beginy<=sum;             //可省略上面(1)(2)语句,y<=y+1;
end
endmodule//--------testbench of counter------
module counter_tb;
reg             clk,res;
wire[7:0]       y;counter counter(.clk(clk),.res(res),.y(y));initial beginclk<=0;res<=0;#17     res<=1;#6000   $stop;
endalways #5 clk<=~clk;endmodule

仿真结果:
在这里插入图片描述
2、4级伪随机码发生器
在这里插入图片描述
在这里插入图片描述

代码:

//四级伪随机码发生器
`timescale 1ns/10ps
module m_gen(clk,res,y);
input                 clk;
input                 res;
output                y;reg[3:0]              d;
assign                y=d[0];always@(posedge clk or negedge res)
if(~res)begind<=4'b1111;
end
else begind[2:0]<=d[3:1];      //右移一位d[3]<=d[3]+d[0];     //模二加
endendmodule//-------testbench of m_gen-------
module m_gen_tb;
reg                    clk,res;
wire                   y;
m_gen m_gen(.clk(clk),.res(res),.y(y));initial beginclk=0;res=0;#17     res=1;#600   $stop;
end
always #5 clk=~clk;endmodule

仿真波形图:
在这里插入图片描述
在这里插入图片描述
小结:
在这里插入图片描述

第五讲

1、秒计数器(s_counter, 0-9秒循环计数)

在这里插入图片描述
代码:

//2023-09-07,time
//秒计数器,0-9循环;
`timescale 1ns/10ps
module s_counter(clk,res,s_num);
input               clk;
input               res;
output[3:0]         s_num;parameter           frequency_clk=24;//24MHzreg[24:0]             con_t;     //秒脉冲分频计数器;
reg                  s_pulse;   //秒脉冲尖;
reg[3:0]       			 s_num;
always@(posedge clk or negedge res)
if(~res)begincon_t<=0;s_pulse<=0;s_num<=0;end
else begin//if( con_t==frequency_clk*1000000-1)beginif( con_t==frequency_clk*1000-1)begin//为了仿真方便观察,数值改小了con_t<=0;endelse begincon_t<= con_t+1;endif( con_t==0)begins_pulse<=1;endelse begins_pulse<=0;endif(s_pulse)beginif(s_num==9)begins_num<=0;endelse begins_num<=s_num+1;endend
end
endmodule//-------testbench of s_counter------
module s_counter_tb;
reg           clk,res;
wire[3:0]     s_num;
s_counter s_counter(.clk(clk),.res(res),.s_num(s_num));initial beginclk<=0;res<=0;#17   res<=1;#300000 $stop;
endalways#5 clk=~clk;endmodule

仿真图:
在这里插入图片描述2、秒计数器加数码管显示

在这里插入图片描述
3、0-59秒显示
在这里插入图片描述
小结:
在这里插入图片描述

第六讲

1、相邻点累加
在这里插入图片描述
构想:
在这里插入图片描述
代码:

//2023-09-11,time
//相邻16点相加;
`timescale 1ns/10ps
module sigma_16p(clk,res,data_in,syn_in,data_out,syn_out);
input                   clk;
input        						res;
input[7:0]              data_in;//采样信号
input                   syn_in;//采样时钟
output[11:0]            data_out;//累加结果输出
output                  syn_out;//累加结果同步脉冲reg                     syn_in_n1;//syn_in的反向延时;
wire                    syn_pulse;//采样时钟上升沿识别脉冲;
assign									syn_pulse=syn_in&syn_in_n1;
reg[3:0]                con_syn;//采样时钟循环计数器wire[7:0]               comp_8;//补码
wire[11:0]              d_12;//升位结果
assign                  comp_8=data_in[7]?{data_in[7],~data_in[6:0]+1}:data_in;//补码运算;
assign                  d_12={comp_8[7],comp_8[7],comp_8[7],comp_8[7],comp_8};
reg[11:0]               sigma;//累加计算;
reg[11:0]								data_out;
reg                     syn_out;always@(posedge clk or negedge res)
if(~res)beginsyn_in_n1<=0;con_syn<=0;sigma<=0;data_out<=0;syn_out<=0;
end
else beginsyn_in_n1<=~syn_in;if(syn_pulse)begincon_syn<=con_syn+1;endif(syn_pulse)beginif(con_syn==15)beginsigma<=d_12;data_out<=sigma;syn_out<=1;endelse beginsigma<=sigma+d_12;endendelse beginsyn_out<=0;end
endendmodule//---------testbench of sigma_16p_tb-------
module sigma_16p_tb;
reg                     clk,res;
reg[7:0]                data_in;
reg                     syn_in;
wire[11:0]              data_out;
wire                    syn_out;
sigma_16p sigma_16p(.clk(clk),.res(res),.data_in(data_in),.syn_in(syn_in),.data_out(data_out),.syn_out(syn_out));initial beginclk<=0;res<=0;data_in=1;syn_in<=0;#17     res<=1;#25000  $stop;
endalways #5 clk<=~clk;always #100 syn_in<=~syn_in;endmodule

仿真结果:
data_in=1:
在这里插入图片描述
data_in=8’b1000_0001 //data_in=-1在这里插入图片描述

小结:
在这里插入图片描述

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

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

相关文章

Redis高效、安全的不停机数据迁移方案

Redis是目前最流行的键值对存储数据库&#xff0c;凭借高性能和丰富的数据类型的特性&#xff0c;不仅可以作为缓存&#xff0c;还可以作为一个可持久化的数据库存储。随着业务的发展和版本的迭代&#xff0c;必然会遇到内存不足、集群节点不够和BUG等一系列问题。为了防止这些…

ubuntu基本配置

记录一下每次重新安装系统之后都要进程的操作 更新源 更新源的教程 sudo bash -c "cat << EOF > /etc/apt/sources.list && apt update deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb-src http://mirrors.a…

1-4 AUTOSAR方法论

总目录——AUTOSAR入门详解AUTOSAR入门详解目录汇总&#xff1a;待续中。。。https://xianfan.blog.csdn.net/article/details/132818463 目录 一、前言 二、方法论 三、单个ECU开发流程 一、前言 汽车生产供应链上有以下角色&#xff1a;OEM、TIER1、TIER2&#xff0c;其主…

国内外大语言模型调研(更新到2023.09.12)

目录 国外 OpenAI-ChatGPT Anthropic-Claude Google-Bard 国内 百度-文心一言 清华大学&智谱AI-ChatGLM 百川智能-百川大模型 科大讯飞-星火 阿里-通义千问 360-360智脑 腾讯-混元大模型 华为-盘古大模型 字节跳动-云雀大模型 好未来-MathGPT 商汤科技-商量…

C基础-操作符详解

操作符分类&#xff1a; 算数操作符&#xff1a; - * / % //算数操作符 // int main() // { // // /除法 1.整数除法(除号两端都是整数) 2浮点数除法&#xff0c;除号的两端只要有一个小数就执行小数除法 // // 除法中&#xff0c;除数为0 // int a 7 / 2; /…

Java基础入门·多线程·线程池ThreadPool篇

前言 特点分析 线程池ThreadPool 销毁线程池 Executor类 ​​​​​​​ ​​​​​​​ ​​​​​​​ Callable接口 线程池使用 ​​​​​​​…

Android EditText setTranslationY导致输入法覆盖问题

平台 RK3288 Android 8.1 显示: 1920x1080 160 dpi 概述 碰到一个问题&#xff1a; 弹出的输入法会覆盖文本输入框。 原因&#xff1a;输入框使用了setTranslationY() 位置偏移后&#xff0c; 输入法无法正确获取焦点的位置。 分析 先上图: 初始布局 调用etTranslation…

抖音小程序开发教学系列(5)- 抖音小程序数据交互

第五章&#xff1a;抖音小程序数据交互 5.1 抖音小程序的网络请求5.1.1 抖音小程序的网络请求方式和API介绍5.1.2 抖音小程序的数据请求示例和错误处理方法 5.2 抖音小程序的数据缓存和本地存储5.2.1 抖音小程序的数据缓存机制和使用方法5.2.2 抖音小程序的本地存储和数据持久化…

unity 接收拼接数据进行纹理替换且保存相机纹理到rtsp server(一)

1 rtsp 协议后编码解码 rtsp协议的问题就是&#xff0c;拼接完成后&#xff0c;还需要编码&#xff0c;而unity里面再需要解码&#xff0c;需要的过程多了一步编码再解码&#xff0c;大大加重了 2 rtsp 协议后轻量编码 rtsp协议使用mjpeg进行图片传输。why&#xff1f;这样做…

vite + react + typescript + uni-app + node 开发一个生态系统

简介 使用 vite react typescript uni-app node 来开发一个简易的生态系统案例&#xff0c;包含 APP&#xff0c;H5&#xff0c;微信小程序&#xff0c;控制台&#xff0c;服务端 开发 admin 技术栈&#xff1a;vite react typescript初始化控制台项目选择自定义预设…

【C语言】指针的“最后一站”【进阶版】

欢迎各位看官^_^ 目录 1、字符指针 2、指针数组 3、数组指针 3.1数组指针的定义 3.2数组指针的使用 4、数组指针和指针数组的区别 5、数组参数&#xff0c;指针参数 5.1数组参数定义 5.2指针参数定义 5.3一维数组传参 5.4二维数组传参 5.5一级指针传参 5.6二级指…

《Docker 容器化的艺术:深入理解容器技术》

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

javaweb04-vue基础

话不多说&#xff0c;参考官网地址Vue官网集成Vue应用。 一、Vue快速入门 &#xff08;1&#xff09;新建HTML页面&#xff0c;引入Vue.js 我这里用的是CDN方式 <script src"https://unpkg.com/vue3/dist/vue.global.js"></script> &#xff08;2&am…

windows10系统下Python3.11中安装Numpy库教程

Python3.11中安装Numpy库目录 项目场景&#xff1a;问题描述解决方案&#xff1a;①下载Numpy文件②把NumPy文件放到Python安装的Scripts文件夹里。③安装numpy④安装验证 项目场景&#xff1a; numpy是开源的数值计算扩展&#xff0c;用于数据分析、机器学习、科学计算的重要…

【Java 基础篇】Java TreeSet 详解:红黑树实现的有序集合

Java 集合框架提供了多种数据结构&#xff0c;用于存储和操作数据。其中&#xff0c;TreeSet 是一种特殊类型的集合&#xff0c;它通过红黑树&#xff08;Red-Black Tree&#xff09;数据结构实现了有序的、唯一元素存储。本篇博客将深入探讨 TreeSet&#xff0c;包括其概念、特…

小程序中使用分包

前言 小程序在未使用的分包的情况下仅支持大小为2M,如果图片等资源过多的情况下可以使用分包功能&#xff0c;使用分包的情况下单个分包大小不能超过2M,总大小不能超过20M&#xff0c;分包有两种情况&#xff1a;普通分包和独立分包&#xff0c;下面介绍的是普通分包。官方文档…

《向量数据库指南》——哪些需求推动了如Milvus Cloud等的向量数据库的更新和迭代?

这个问题需要深入讨论大模型与向量数据库之间的关系。从去年 ChatGPT 推出时这个问题就开始引发我们的思考。在当时,我们敏锐地意识到这将是一个机遇。然而,在国内,这个概念的认知需要更长的时间。我个人在去年四五月份的美国之行中注意到,数据库在美国已经是一个非常热门的…

算法通关村第十九关:青铜-动态规划是怎么回事

青铜挑战-动态规划是怎么回事 动态规划&#xff08;简称DP&#xff0c;Dynamic Programming&#xff09;&#xff1a;最热门、最重要的算法之一。面试中大量出现&#xff0c;整体偏难。 1. 热身&#xff1a;重复计算和记忆化搜索&#xff08;如何说一万次"我爱你"&…

【LeetCode-中等题】59. 螺旋矩阵 II

文章目录 题目方法一&#xff1a;二维数组缩圈填数字方法二&#xff1a; 题目 方法一&#xff1a;二维数组缩圈填数字 定义四个边界条件&#xff0c;每转一圈&#xff0c;把数值填进去&#xff0c;然后缩小一圈&#xff0c;直到不满足条件位置 结束循环条件可以是&#xff1a; …

QML android 采集手机传感器数据 并通过udp 发送

利用 qt 开发 安卓 app &#xff0c;采集手机传感器数据 并通过udp 发送 #ifndef UDPLINK_H #define UDPLINK_H#include <QObject> #include <QUdpSocket> #include <QHostAddress>class UdpLink : public QObject {Q_OBJECT public:explicit UdpLink(QObjec…