FPGA-1、verilog书写基本格式

本文介绍了Verilog语言中模块的基本书写格式,包括输入输出的定义,以及使用assign进行信号赋值。在测试激励方面,讲解了如何创建仿真模块,使用timescale设置时标,并通过always语句实现信号的延迟和随机赋值。此外,还强调了模块例化以及测试过程中信号的连接方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、Verilog书写基本格式


功能:与输入

在这里插入图片描述


功能模块代码如下(示例):

module key_ctrl_led (                //模块module名和文件名保持一致,module与endmodule一致
input        wire                key1,        //输入input一定都是线型wire的,默认位宽为1,此处不用标明位宽
input        wire                key2,        //第二个输入信号,加逗号连接
output        wire                led         //输出output,三个信号,最后一个信号不加逗号。output类型可以是wire也可以是reg型
);
//1&1=1 1&0=0 0&1=0 0&0=0        //与的真值表
assign led = key1&key2;                //assign是对线型语句的输出变量赋值

endmodule

重点知识:
1、输入Input一定都是线型wire的,输出output可以wire也可以reg
2、输入输出是针对模块写的
3、信号名称是唯一的(如key1、key2、led)

assign相当于连线,一般是将一个变量的值不间断地赋值给另一个变量,就像把这两个变量连在一起,所以习惯性的当做连线用,比如把一个模块的输出给另一个模块当输入。

Testbench 测试激励 :给功能模块的key1、key2信号源,然后查看led信号是否正确

不可综合:不可以真正下载到FPGA


仿真激励模块代码如下(示例):

`timescale        1ns/1ns //`timescale 表示的是时标,后面的表示单位/精度
//#10,比如要用到延时功能,#10代表延时10ns。不能10.1,除非精度改成100ps=0.1ns。
module tb_key_ctrl_led();//此测试模块不需要定义端口
reg key1;//内部变量只需要定义变量类型和名称,不需要定义方向
reg key2;//变量类型定义只与变量的赋值方式有关
wire led;

//always 是一种赋值方式, #10 表示延时 10 个时间单位
//每过10ns,key阻塞赋值
always #10         key1 = {$random};
//$random 是一个随机函数,可以用来取一个随机数, {}是取绝对值
always #15        key2 = {$random};

//例化被测试模块,两个模块之间的信号传递的唯一方式
key_ctrl_led key_ctrl_led_inst(
	.key1(key1),
	.key2(key2),
	.led(led)

);
endmodule

重点知识:
timescale 1ns/1ns //timescale 表示的是时标,后面的表示单位/精度
//#10,比如要用到延时功能,#10代表延时10ns。不能10.1,除非精度改成100ps=0.1ns。

1、reg在always语句下编程
2、例化模块内部的输出,括号内是wire变量。
例化模块内部的输入,括号内既可以是wire也可以reg。
3、.key1(key1),“.”后面的key1是功能模块中的,括号里的key1是仿真激励模块中的
4、$random函数调用时,返回一个32位的随机数,它是一个带符号的整形数


结果

在这里插入图片描述

软件介绍: VerilogHDL代码格式器一键完成格式VerilogHDL代码    本软件暂时只支持VerilogHDL代码文件(*.v),替代传统的使用空格或者tab字符手动调整代码格式的方法. 添加代码文件(*v)后,只需点击格式化代码按钮,软件就会开始对列表中选定的代码文件进行格式化,并在代码列表中显示代码格式化的结果.代码文件状态智能检测    提供文件状态智能检测功能.代码文件刚加入文件列表中,状态显示为问号.经过格式化处理成功后状态显示为对钩.如果文件在外部被修改,本软件也会自动检测到,并将文件状态显示为问号.支持批量的代码文件格式化    可以格式化单个代码文件,也可以添加多个代码文件,认定批量任务.同时可以把当前文件列表导出为列表文件(*.flst),也可以通过列表文件导入文件列表.可自定义多种灵活的代码格式    软件提供GNU,ANSI,KR三种常见的代码格式风格,也为用户提供了用户自定义的代码格式.用户自定义的格式可以导出为格式配置文件(*.ini),也可以导入该配置文件,快速设置代码格式.代码格式效果即时预览    用户在修改代码格式设置时,可以在左侧的预览窗口看到即时效果.不断地调整设置,直到用户满意为止.用户在设置格式时,可以选择启用或者禁用用户自定义的设置.启用自定义设置是在当前选定的标准代码风格的基础上进行的.格式化后自动保存    经过格式化成功的代码,软件自动保存到原来的位置.在进行格式化操作时,软件会自动将代码文件进行备份.备份文件的文件扩展名可以用户自己选择为*.v_bak,或*.org,或*.old.没有格式化成功的代码将不被修改.高亮显示语法和注释        语法检测并蓝色高亮显示的方法,可以根据需要显示常用的关键字. 代码注释分为行注释(//)和块注释(/**/),都显示为绿色.语法和注释高亮显示,可以大大方便代码的阅读.使用时需要注意的问题    (1)软件不支持带中文的文件路径;    (2)在开始代码格式化的时候,请务必在QuartusII或ISE等官方集成开发环境(IDE)中先将代码保存,然后再启动代码格式化.否则软件格式化的代码将不包含在这些IDE中的修改;    (3)在使用本软件格式化代码完毕后,切换回QuartusII或ISE等集成开发环境(IDE)时,会提示,选择是进行重新加载,则此时加载进来的代码就是本软件格式化过后的代码;    (4)在进行代码格式化之前,建议先成功编译.因为针对不合语法的Verilog代码,格式化之后可以会出现格式破坏的可能.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值