当前位置: 首页 > news >正文

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运算的结果
assign           sum=y+1;//组合逻辑部分always@(posedge clk or negedge res)
if(~res) beginy<=0;
end
else beginy<=sum;
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

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

http://www.lryc.cn/news/154044.html

相关文章:

  • LLMs之Code:Code Llama的简介、安装、使用方法之详细攻略
  • [国产MCU]-W801开发实例-MQTT客户端通信
  • 搭建个人hMailServer 邮件服务实现远程发送邮件
  • React的 虚拟DOM创建
  • 供热管网安全运行监测,提升供热管网安全性能
  • 手写Mybatis:第14章-解析和使用ResultMap映射参数配置
  • GE VME-7807RC-410001350-93007807-410001 K数字输入模块
  • C++插入加密,替代加密
  • Web前端开发概述
  • Web自动化 —— Selenium元素定位与防踩坑
  • 【数据结构】树和二叉树的概念及结构(一)
  • 第三章 USB应用笔记之USB鼠标(以STM32 hal库为例)
  • 微服务01-基本介绍+注册中心EureKa
  • 【ES6】JavaScript中的异步编程:async和await
  • 51单片机热水器温度控制系统仿真设计( proteus仿真+程序+原理图+报告+讲解视频)
  • Spring Boot 配置文件加密
  • 【树形权限】树形列表权限互斥选择、el-tree设置禁用等等
  • ubuntu 22.04安装cuda、cudnn、conda、pytorch
  • 2023 最新前端面试题 (HTML 篇)
  • 华为云银河麒麟V10安装libmcrypt
  • 智慧导览|智能导游系统|AR景区导览系统|景区电子导览
  • 【Docker】Docker基本使用介绍
  • Linux命令200例:man用于显示和阅读关于Linux内置命令的使用说明
  • idea 无法识别maven的解决
  • String底层函数的实现方式
  • uniapp实现微信小程序全局可分享功能
  • 大数据成为市场营销利器 ,促进金融贷款企业获客精准化
  • Acwing 3472. 八皇后
  • Word转为PDF后图片模糊怎么办?Word转为PDF的技巧介绍
  • 【django开发手册】详解drf filter中DjangoFilterBackend,SearchFilter,OrderingFilter使用方式