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.hqwc.cn/news/98896.html

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

相关文章

ModaHub魔搭社区:星环科技向量数据库Hippo社区版来啦

大语言模型正在与企业应用迅速结合,并深刻改变企业的各个产业环节。而大模型训练所使用的数据包含了如文档、图片、音视频等各种类型的非结构化数据,传统关系型数据库能力有限。通过将这些非结构化数据转换为多维向量,可以结构化地在向量数据库中进行管理,实现高效的数据存…

如何让insert程序速度快,可以试试联合SQL(insert 和 select 一起使用)?

查询添加可选择SQL执行&#xff0c;速度远超程序执行 insert 和 select案例 insert into 表1(列1,列2,列3,...) select 列1,列2,列3,...from表2(GROUP BY 列)116511 条数据 耗时45秒&#xff0c; 如果是程序查询然后再insert&#xff0c;则需要30分钟左右&#xff01;&#x…

静态路由:配置和使用详解

文章目录 一、静态路由的配置和使用详解1. 配置要点1.1 点到点接口配置1.2 以太网接口配置 2. 默认路由3. 静态路由的配置命令4. 静态路由实现路由备份和负载分担 二、静态路由的优先级和比较1. 静态路由的优先级设置2. 静态路由与动态路由的比较2.1 静态路由优缺点2.2 动态路由…

PMD 检查java代码:在条件语句中避免使用硬编码的字面量(AvoidLiteralsInIfCondition )

https://docs.pmd-code.org/pmd-doc-6.55.0/pmd_rules_java_errorprone.html#avoidliteralsinifcondition 在条件语句中&#xff0c;避免避免使用硬编码的字面量。可以将字面量声明为有描述意义的静态成员或者私有成员&#xff0c;提升可维护性。默认忽略"-1" 和&qu…

Pygame中Trivia游戏解析6-3

3.3 Trivia类的show_question()函数 Trivia类的show_question()函数的作用是显示题目。主要包括显示题目框架、显示题目内容和显示题目选项等三部分。 3.3.1 显示题目的框架 在show_question()函数中&#xff0c;通过以下代码显示题目的框架。 print_text(font1, 210, 5, &q…

【STM32】IIC使用中DMA传输时 发送数据总少一个的问题

问题描述 在使用STM32 I2C数据发送过程中&#xff0c;发现每轮实际发送出去的数据总比在DMA配置中设定的传输数据个数要少一个。比方说&#xff1a;DMA配置里设定的传输数据个数是10个&#xff0c;结果发现在总线上只能发出9个&#xff0c;经过进一步发现是少了最后一个数据。…

生成式人工智能促使社会转变

作者&#xff1a;JEFF VESTAL 了解 Elastic 如何处于大型语言模型革命的最前沿 – 通过提供实时信息并将 LLM 集成到数据分析的搜索、可观察性和安全系统中&#xff0c;帮助用户将 LLM 提升到新的高度。 iPhone 社会转变&#xff1a;新时代的黎明 曾几何时&#xff0c;不久前…

固定资产管理怎么改革

固定资产管理改革需要考虑以下几个方面&#xff1a; 建立完善的管理制度和流程&#xff1a;制定固定资产管理的规章制度&#xff0c;明确各部门的职责和任务&#xff0c;规范资产采购、登记、领用、保管、维修、报废等流程。 采用先进的资产管理软件&#xff1a;通过采用先进的…

动作分析:提升效率、改进质量、创新流程的秘密武器

动作分析的主要的用途和目的是排除多余的动作、无效的动作或缓慢的动作&#xff0c;如弯腰、站在凳子上、蹲着、工作场所差、缺少合适的工作设备、处于搜索状态的人和事等&#xff0c;形成标准化作业规范&#xff0c;从而通过最省力的方法达到最大的工作效率。这项研究可以不花…

Dom-clobbering原理和例题

目录 引入 1.获取标签 2.覆盖 3.多层覆盖 利用Dom-clobbering 1.tostring 2.集合取值 3.层级关系取值 4.三层取值 5.自定义属性 例题 1 2. 3. 引入 分析 引入 先用三个小例子看看dom-clobbering干了什么 1.获取标签 这个例子给img标签分别做了一个id和一个name…

Java类加载机制

简介 在Java的世界里&#xff0c;每一个类或者接口&#xff0c;在经历编译器后&#xff0c;都会生成一个个.class文件。 类加载机制指的是将这些.class文件中的二进制数据读入到内存中&#xff0c;并对数据进行校验&#xff0c;解析和初始化。最终&#xff0c;每一个类都会在…

朴素,word,任何参考文献导入endnote

朴素&#xff0c;word&#xff0c;任何参考文献导入endnote 注意&#xff1a;对于以下这几种不做阐述&#xff0c;看其他帖子都有讲述&#xff1a; 这里的参考文献指的是类似于&#xff1a; [1]. Li Y, Lu Y, Huo X, et al. Bandgap tuning strategy by cations and halide io…