verilog之基本结构
verilog语法的基本结构
1、verilog的定义
verilog,一种硬件描述语言,致力于提高数字电路,尤其是大规模数字电路的描述规范。从描述就可以看出,这个语言和C不同,不是高级语言。但是,这个语言也不像汇编。其本身能够完成许多高级语言的功能,比如判断、计算、选择等操作。这就容易让人误以为这是一门高级语言。其实,有人想将高级语言引入硬件设计的,只不过现在还没有成功。高级语言和硬件语言之间的差距还是比较大的。
2、verilog的基本语法
想学一门语言,自然要了解语法。对于高级语言来说,其本身源自人类的逻辑,所以学习者可以更具自身的逻辑来实现功能。但是对于硬件语言来说,必须掌握一套内在的规律才能设计。目前在学习了一些基本的verilog模块后,个人觉得初级的verilog语言遵循的就是信号。verilog实现了信号的输入,处理和输出。每一个信号都必须与设计相关联。对于无关信号编译器会自动排除并发出警告。与此同时,每一个信号都占用着实际的硬件资源,越少的信号使用,硬件的规模就会越小。verilog的语法原则就是信号正确。
3、verilog的基本关键字
想写verilog,首先要做的就是了解关键字,这是开始的材料。
第一个就是module,用于声明硬件主体。在一个verilog代码中写一个module,并且模块名与文件名保持一致。加上endmodule就构成了一个闭合。这里类似与HTML中的标签。
第二个就是input 和 output,前面提到verilog是以处理信号为目标的,那么就会有信号的声明。input和output就是声明这个模块的外部连接信号。当然,还有inout,这里就不做介绍。其他在内部声明的都是内部信号。
第三个就是wire和reg,这部分则是信号的类别。和C语言中的数据类型类似,reg和wire是两种不同类型的变量。
第四个就是assign和always,这两个就是信号的处理函数了,可以对应到C中的printf等等系统函数。
有了这四个部分,实际上就可以设计出具有基本带你路功能的verilog代码了。
4、verilog的基本设计
verilog的设计,我个人习惯从信号的角度入手设计,通过实现描述信号的变化来设计。例如led灯闪烁就可以描述为一个周期变化的信号。依次执行事件1、2、3等就可以描述为状态机信号模型。这里实际上是对应到了数字设计的部分。利用verilog,完全可以设计出一个带有IO、计算器、控制器、存储器的小型处理器。当然,也可以按照事件的发生来设计,这里自己选择就好。
还是附上一段简单的代码吧
module mux(out, a, b, sel);
input a, b, sel;
output out;
reg out;
always @(a or b or sel)
if (!sel) out = a;
else out = b;
endmodule
上面的代码是描述了一个选择器。即sel=0,out=a,否则out=b。
代码的设计大体的思路就是这样,尝试一下就可以快速的理解。
5、仿真文件
前面说的都是设计文件。但是verilog还有一个重要的作用就是数字仿真。学过数电就会知道,电路仿真在软件上实现时需要自己去找合适的激励,这一步不断的调整还是比较费力的。而对于使用verilog的设计而言,虽然可以综合为rtl级电路,但是仿真时不可能将其转化为原理图,这样太费时间了。对于大型项目来说,基本不可能。所以,既然激励源也是由电路构成的,自然而然可以使用verilog去描述。所以这里产生了仿真verilog文件。
和设计时verilog语法不同,仿真时语法更为随意,不对应电路,会有许多系统函数可以使用。具体的设计还是要在实践中理解。
插入一段代码:
module RelationTest;
reg a; reg [1:0]b; reg [5:0] c;
initial begin
a=1'b1; b=2'b00; c=6'b101001;
$displayb({a, b}); //??3?b100
$displayb({c[5:3], a}); // 4?b1011
$displayb({4{a}}); // 4?b1111
end
endmodule
这里就是仿真文件,可以看到设计中多了许多其他的语法。这些语法有时间再讲吧。这里就是了解一下代码结构。
verilog之基本结构的更多相关文章
- 简单的Verilog测试模板结构
这里记录一下曾经用到的简单的测试模板,如下所示: //timescale `timescale 1ns/1ns module tb_module(); //the Internal motivatio ...
- Verilog HDL程序设计——基本要素
Verilog基本上熟悉了,继续整理一下Verilog的学习笔记吧.前面记载了Verilog的结构,写Verilog的结构有了,但是该怎么写呢?在写之前就得了解一下Verilog的一些基本要素了,也就 ...
- 至芯FPGA培训中心-1天FPGA设计集训(赠送FPGA开发板)
至芯FPGA培训中心-1天FPGA设计集训(赠送开发板) 开课时间2014年5月3日 课程介绍 FPGA设计初级培训班是针对于FPGA设计技术初学者的课程.课程不仅是对FPGA结构资源和设计流程的描述 ...
- FPGA 概述
概述 verilog HDL Verilog HDL基本结构 1 Verilog HDL程序是由模块构成的.每个模块嵌套在module和endmodule声明语句中. 2 每个Verilog HDL源 ...
- 【黑金原创教程】【Modelsim】【第三章】理想就是美丽
声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...
- 【黑金教程笔记之001】veriloghdl 扫盲文—笔记&勘误
001_veriloghdl 扫盲文—笔记&勘误 2014/10/31 原文作者:akuei2 联系方式:blog.ednchina.con/akuei2 勘误001: Page 3 0.1 ...
- VerilogHDL学习
No.1 Verilog HDL程序结构 Verilog 描述硬件的基本设计单元是模块 module 复杂的电子电路构建主要是通过模块之间的相互连接调用来实现的,在Verilog中将模块包含在关键字 ...
- 数电第一周总结_by_yc
数电第一周总结 重点:Verilog建模方式 结构级建模: 需基于电路原理图 module mux( input data0, input data1, input sel, output out); ...
- Verilog HDL基础语法讲解之模块代码基本结构
Verilog HDL基础语法讲解之模块代码基本结构 本章主要讲解Verilog基础语法的内容,文章以一个最简单的例子"二选一多路器"来引入一个最简单的Verilog设计文件的 ...
- Verilog HDL的程序结构及其描述
这篇博文是写给要入门Verilog HDL及其初学者的,也算是我对Verilog HDL学习的一个总结,主要是Verilog HDL的程序结构及其描述,如果有错,欢迎评论指出. 一.Verilog ...
随机推荐
- 【Android】使用MediaExtractor获取关键帧的时间戳
1 前言 使用MediaExtractor.MediaMuxer去掉视频文件中的音频数据 中介绍了 MediaExtractor 类的主要方法,本文主要将使用其 advance() 和 seekTo( ...
- wsl 配置ubuntu apt源为阿里源
$ sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak $ sudo sed -i 's/security.ubuntu/mirrors.a ...
- 在Hexo中引入本地图片的实现
实现步骤 第一步:修改项目根目录下的_config.yml文件参数post_asset_folder值为true. # 开始使用本地静态资源 post_asset_folder: true 第二步:安 ...
- 50从零开始用Rust编写nginx,原来TLS证书还可以这么申请
wmproxy wmproxy已用Rust实现http/https代理, socks5代理, 反向代理, 负载均衡, 静态文件服务器,websocket代理,四层TCP/UDP转发,内网穿透等,会将实 ...
- 单表查询,多表查询,子查询---day37
1.单表查询 # ### part1 单表查询 # sql 查询语句的完整语法 '''select..from..where..group by..having..order by..limit..' ...
- FPGA MCS文件为什么比BIN文件烧录快
原因 Xilinx FPGA固化FPGA程序到FLASH时,可以选择使用MCS或者BIN格式,BIN是纯二进制文件,MCS是ASCII格式的文本文件. MCS是Intel早期为MCS系列 II ISI ...
- java中sha1.md5,base64到底怎么回事
MD5 Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛使用的一种散列函数,用以提供消息的完整性保护.MD5用的是哈希函数,在计算机网络中应用 ...
- 【Filament】基于物理的光照(PBR)
1 前言 自定义Blinn Phong光照模型中实现了基础的自定义光照,与现实的光照还是有些差别,本文将实现更逼真的光照效果,即基于物理的光照(PBR). 读者如果对 Filament 不太熟 ...
- [vbs] 定时关闭进程代码
Dim bag,pipe do Set bag=GetObject("WinMgmts:") Set pipe=bag.execquery("select * from ...
- Java 小练习 创建类 + 调用(1)
1 package com.bytezero.exer; 2 3 /** 4 * 5 * @Description 6 * @author Bytezero·zhenglei! Email:42049 ...