Verilog零基础入门(边看边练与测试仿真)-笔记

文章目录

  • 第一讲
  • 第二讲
  • 第三讲
  • 第四讲
  • 第五讲

第一讲

1、testbench 没有端口,所以没括号
2、testbench 输入端 之后要变动 所以定义为reg
3、#10 :过10个时间单位 ;’timescale 1ns/10ps 即 1ns 的时间单位 10ps的时间精度
4、reg 型变量赋值的时候 用带箭头的等号“<=”,

第二讲

1、always@(a or b or sel) 中的a, b, c是敏感变量,输入。有几个输入写几个输入
2、在always 里面赋值饿变量需要是reg型。
在这里插入图片描述
3、$stop 系统任务
4、多路选择器
在这里插入图片描述
代码:

//四选一逻辑
`timescale 1ns/1ps
module fn_sw_4(a,b,sel,y);
input 							a;
input 							b;
input[1:0]					sel;
output 							y;reg 								y;
always@(a or b or sel)begincase(sel)2'b00:begin y <= a&b;end2'b01:begin y <= a|b;end2'b10:begin y <= a^b;end2'b11:begin y <= ~(a^b);endendcase
endendmodule//-------testbench of fn_sw_4----------
module fn_sw_4_tb;
reg[3:0]						absel;
fn_sw_4 fn_sw_4(.a(absel[0]),.b(absel[1]),.sel(absel[3:2]),.y(y));initial beginabsel<=0;   //先赋初始值#200  $stop;
endalways #10 absel<=absel+1;   //每过10ns,absel加一,这样经过16次加一,可以取完四位寄存器所有可能,并观察y的取值
endmodule

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

第三讲

1、补码转换
在这里插入图片描述
代码:

//补码转换逻辑
`timescale 1ns/10ps
module comp_conv(a,a_comp);input[7:0]             a;
output[7:0]            a_comp;wire[6:0]              b;//按位取反的幅度位
wire[7:0]              y;//负数的补码assign                 b=~a[6:0];
assign                 y[6:0]=b+1;//按位取反+1
assign                 y[7]=a[7];//符号位不变assign                 a_comp=a[7]==1?y:a;//二选一
//assign               a_comp=a[7]?{a[7],~a[6:0]+1}:a;//可替换上面的wire和assign语句
endmodule //----------testbench of comp_conv--------
module comp_conv_tb;
reg[7:0]               a_in;
wire[7:0]              y_out;
comp_conv comp_conv(.a(a_in),.a_comp(y_out));
initial begin a_in<=0;#3000     $stop;
endalways#10 a_in=a_in+1;
endmodule

在这里插入图片描述
2、7段数码管译码器
在这里插入图片描述
代码:

//七段码译码器
`timescale 1ns/10ps
module seg_dec(num,a_g);
input[3:0]                 num;
output[6:0]                a_g;//a_g-->{a,b,c,d,e,f,g}reg[6:0]                   a_g;
always@(num)begincase(num)4'd0: a_g<=7'b111_1110; 4'd1: a_g<=7'b011_0000;  4'd2: a_g<=7'b110_1101;  4'd3: a_g<=7'b111_1100;  4'd4: a_g<=7'b011_0011;  4'd5: a_g<=7'b101_1011;  4'd6: a_g<=7'b101_1111;  4'd7: a_g<=7'b111_0000;  4'd8: a_g<=7'b111_1111;  4'd9: a_g<=7'b111_1011;  default: a_g<=7'b000_0001;  //中杠endcaseendendmodule//--------test bench of seg_dec---------
module seg_dec_tb;
reg[3:0]                    num_in;
wire[6:0]                   a_g_out;
seg_dec seg_dec(.num(num_in),.a_g(a_g_out));
initial begin num_in<=0;#100        $stop;
end														always #10 num_in<=num_in+1;															
endmodule

如图:输入3,应该是111_1110,根据波形图是正确的。
在这里插入图片描述

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

第四讲

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、秒计数器

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

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

相关文章

鼠标悬停阴影的效果被旁边div挡住的解决办法

出现的问题 需求要求鼠标悬停某个图片上有阴影效果&#xff0c;但阴影被旁边相邻的div挡住了&#xff0c;如图所示 解决方案 给悬停的这块div增加2个css属性 $(this).css(position, relative); $(this).css(z-index, 200);新的效果如图所示 一直写后端&#xff0c;前端的…

opencv案例06-基于opencv图像匹配的消防通道障碍物检测与深度yolo检测的对比

基于图像匹配的消防通道障碍物检测 技术背景 消防通道是指在各种险情发生时&#xff0c;用于消防人员实施营救和被困人员疏散的通道。消防法规定任何单位和个人不得占用、堵塞、封闭消防通道。事实上&#xff0c;由于消防通道通常缺乏管理&#xff0c;导致各种垃圾&#xff0…

用java的Arrays类实现数组拷贝

java.util.Arrays类有几个静态的针对不同类型数据的数组拷贝方法。 示例 用copyOf(byte[] original, int newLength)拷贝 copyOf(byte[] original, int newLength)&#xff0c;将原数组的内容拷贝到新的数组中&#xff0c;截取或者填充&#xff08;如果长度不够&#xff0c;…

Linux命令之用户管理(详解)

Linux命令之用户管理 常用基础命令修改root密码切换用户身份改变当前目录查看命令的用法查看命令之ls 用户管理用户的创建adduser创建useradd创建两种方式的区别 用户删除用户密码重置查看当前所有用户 在介绍Linux用户管理相关的命令之前&#xff0c;我们先介绍一些Linux的一些…

【Linux】高级IO和多路转接 | select/poll/epoll

多路转接和高级IO 咳咳&#xff0c;写的时候出了点问题&#xff0c;标点符号全乱了&#xff08;批量替换了几次&#xff09;&#xff0c;干脆就把全文的逗号和句号都改成英文的了&#xff08;不然代码块里面的代码都是中文标点就跑不动了&#xff09; 1.高级IO 1.1 五种IO模型…

对负载均衡的全面理解

title: 对负载均衡的全面理解 date: 2021-07-10 21:41:24 tags: TCP/IP 对负载均衡服务(LBS)大名入行不多久就一直听闻&#xff0c;后来的工作中&#xff0c;也了解到 软件负载均衡器&#xff0c;如被合入Linux内核的章文嵩的LVS&#xff0c;还有以应用程序形式出现的HAProxy、…

【1day】PHPOK cms SQL注入学习

目录 一、漏洞描述 二、资产测绘 三、漏洞复现 四、漏洞修复 一、漏洞描述 PHPOK CMS是一个基于PHP语言开发的开源内容管理系统(CMS)。它提供了一个强大的平台,用于创建和管理网站内容。PHPOK CMS具有灵活的模块化架构,可以根据网站的需求进行定制和扩展。PHPOK CMS存…

onnx 模型切割掉conv后面的节点,设置输出层名称和最后节点名称一致,设置输出层shape和输出节点一致.

某些模型最后卷积层之后的算子不适合在推理引擎里面跑&#xff0c;切割掉conv后面的算子&#xff0c;在cpu上实现有比较好的性能&#xff0e; 包含&#xff1a; &#xff11;&#xff0e;获取onnx中间节点的shape的示例 &#xff12;&#xff0e;增加onnx模型输出&#xff0c;设…

音视频技术开发周刊 | 309

每周一期&#xff0c;纵览音视频技术领域的干货。 新闻投稿&#xff1a;contributelivevideostack.com。 腾讯云音视频及边缘平台专场邀你一起见证“连接”的力量 9月7日&#xff0c;腾讯全球数字生态大会之腾讯云音视频及边缘平台专场即将开启&#xff01;本次专场将重点分享腾…

【LeetCode】312.戳气球

题目 有 n 个气球&#xff0c;编号为0 到 n - 1&#xff0c;每个气球上都标有一个数字&#xff0c;这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&#xff0c;你可以获得 nums[i - 1] * nums[i] * nums[i 1] 枚硬币。 这里的 i - 1 和 i 1 代表和…

【Docker】 08-Dockerfile

什么是Dockerfile Dockerfile可以认为是Docker镜像的描述文件&#xff0c;是由一系列命令和参数构成的教程&#xff0c;主要作用是用来构建docker镜像的构建文件。 Dockerfile解析过程 Dockerfile的保留命令 保留字作用FROM当前镜像是基于哪个镜像的 第一个指令必须是FROMMA…

C# 类class、继承、多态性、运算符重载,相关练习题

34.函数重载 /*函数重载您可以在同一个范围内对相同的函数名有多个定义。函数的定义必须彼此不同&#xff0c;可以是参数列表中的参数类型不同&#xff0c;也可以是参数个数不同。不能重载只有返回类型不同的函数声明。下面的实例演示了几个相同的函数 Add()&#xff0c;用于对…

测试理论与方法----测试流程第三个环节:设计测试用例

测试流程第三个环节&#xff1a;设计测试用例&#xff1a;怎么测<——>测试需求的提取&#xff1a;测什么 ### 5、测试用例 描述&#xff1a;测试用例(TestCase)&#xff1a;是一份关于【具体测试步骤】的文档&#xff0c;是为了达到最佳的测试效果或高效揭露软件中潜藏的…

外包干了2个月,技术退步明显了...

先说一下自己的情况&#xff0c;大专生&#xff0c;19年通过校招进入湖南某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年8月份&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试…

【postgresql 基础入门】psql客户端的使用方法

psql 客户端使用 ​专栏内容&#xff1a; postgresql内核源码分析手写数据库toadb并发编程 ​开源贡献&#xff1a; toadb开源库 个人主页&#xff1a;我的主页 管理社区&#xff1a;开源数据库 座右铭&#xff1a;天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xf…

【gtpJavaScript】使用JavaScript实现套壳gtp与gtp打字输出效果

postman测试gtp接口 https://platform.openai.com/docs/api-reference/chat/create?langcurl 导入到postman中 记得弄一个gtp的key 然后请求测试gtp接口&#xff1a; 纯前端实现gtp请求页面 目录结构&#xff1a; 部分参考&#xff1a;GitHub - xxxjkk/chat-website: 简易版c…

【ActiveMQ】Failed to start Apache ActiveMQ (localhost, ID_XXX)

问题描述 使用"bin\win64\activemq.bat"启动apache-activemq-5.18.2出错。 jvm 1 | ERROR | Failed to start Apache ActiveMQ (localhost, ID:) jvm 1 | java.io.IOException: Transport Connector could not be registered in JMX: java.io.IOException: F…

Linux下的系统编程——文件与目录操作(六)

前言&#xff1a; 在Linux系统中&#xff0c;文件和目录的操作非常灵活。用户可以通过命令行或者图形界面来进行操作。下面是Linux文件和目录操作的一些常见操作&#xff1a; 目录 一、文件系统 1.inode 2.dentry 二、文件操作 1.stat/lstat&#xff1a; 2.link/unlink…

OpenCV:实现图像的负片

负片 负片是摄影中会经常接触到的一个词语&#xff0c;在最早的胶卷照片冲印中是指经曝光和显影加工后得到的影像。负片操作在很多图像处理软件中也叫反色&#xff0c;其明暗与原图像相反&#xff0c;其色彩则为原图像的补色。例如&#xff0c;颜色值A与颜色值B互为补色&#…

2.5 PE结构:导入表详细解析

导入表&#xff08;Import Table&#xff09;是Windows可执行文件中的一部分&#xff0c;它记录了程序所需调用的外部函数&#xff08;或API&#xff09;的名称&#xff0c;以及这些函数在哪些动态链接库&#xff08;DLL&#xff09;中可以找到。在Win32编程中我们会经常用到导…