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

Verilog和FPGA的自学笔记2——点亮LED

今天说说Verilog的程序框架

先说说个人感受。
觉得Verilog的模块化很强,和C++面向对象有一拼,记得之前写C#,每一个方法、变量都需要封装进class里,相当的模块……

Verilog也是以模块(module)为基础进行搭建的。

先给大家看一段代码,用按键点亮led:

module led(input key,output led
);assign led = ~key;endmodule

(不知道为啥CSDN里无Verilog代码块,用C++的凑合着过吧……)

可以看到,这段代码的开始是module,结束是endmodule。而在这两者之间的,就是我们所写的一个模块。endmodule后面没有分号!!

说说module的语法格式:

module 模块名(端口类型 端口1,端口类型 端口2,……端口类型 端口n
);

各位都是编程大佬,命名规则就不罗嗦了。
注意几个小问题:一个是每个端口后面用逗号,最后一个无逗号,模块名结束要加分号

是不是写成这样会清楚许多:

module led(input ked,output led);

确实,在端口数量少的情况下(虽然比较少见),这样写会更简洁。

那这些端口是用来干啥的呢?
我们用Verilog描述了一个模块,负责对输入(激励)进行处理,最后输出。
端口就是给模块提供输入(激励)和输出(响应)信号的

比如上面的模块,输入信号是key(当然你叫啥都行,比如doge……),输出信号是led。
都有哪些端口类型呢?给大家放在下面了:

端口类型作用
input输入
output输出
inout输入/输出

(inout类型既可以作为输入也可以作为输出)

最顶上的模块写完了,接下来就要写逻辑了。
逻辑一般用assign和always语句实现,今天就说说assign。(发现很多教程总喜欢一股脑的介绍完,喜欢把人搞得晕头转向)

assign 目标信号 = 表达式;  //就是把右面的表达式赋值给左边
assign led = ~key;        /*就像这样*/

悄悄说一句上面不光介绍了assign的写法,一并把Verilog的注释写法讲完了(嘻嘻)

与C、C++不同的是,Verilog不允许单独写逻辑语句,比如这样:

led = ~key;   //大错特错,这一点要注意

无论写多少个逻辑,都得这么写:

assign a= 0;
assign b= 0;
assign c= 0;
……

"~"是一种位运算符,用于将变量的每个位进行取反 (应该不用多说了……)

模块结尾要加endmodule不要写分号再说一遍

相信大家已经对Verilog的模块有了初步认识,今天就写到这里吧,也一千多字了,好有成就感哈哈!

如果有不明白或错误之处,也希望大家在评论区给出,帮助大家的同时也能再次提升自己对于FPGA和Verilog的理解,感谢大家!!

系列链接:
上一篇:Verilog和FPGA的自学笔记1——FPGA
下一篇:Verilog和FPGA的自学笔记3——仿真文件Testbench的编写

http://www.dtcms.com/a/456641.html

相关文章:

  • uniapp创建ts项目tsconfig.json报错的问题
  • Linux性能调优之内核网络栈发包收包认知
  • 静态网站挂马u钙网logo设计影视剪辑
  • Rust 基础语法指南
  • C11 安全字符串转整数函数详解:atoi_s、atol_s、strtol_s 与 strtoimax_s
  • 从入门到实战:全面解析Protobuf的安装配置、语法规范与高级应用——手把手教你用Protobuf实现高效数据序列化与跨语言通信
  • SaaS版MES系统PC端后台功能清单与设计说明
  • 广州建立公司网站多少钱php网站培训机构企业做网站
  • 若依前后端分离版学习笔记(十九)——导入,导出实现流程及图片,文件组件
  • SSM后台投票网站系统9h37l(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • 基于springboot高校汉服租赁系统的设计与实现(文末附源码)
  • 【AI大模型】WPS 接入DeepSeek 实战项目详解
  • 12306网站为什么做那么差网站的统计代码是什么意思
  • 第二章 预备知识(线性代数)
  • 建设网站服务器的方式有自营方式山楂树建站公司
  • 10.8 树形dp
  • Java中第三方日志库-Log4J
  • Redis 键(Key)详解
  • 用AI帮忙,开发刷题小程序:软考真经微信小程序API接口文档(更新版)
  • soular入门到实战(5) - Kanass、sward、soular实现sso单点登录
  • 优秀平面设计作品网站wordpress 多人
  • Django5 与 Vue3 表单交互全解析:从基础到实战
  • 《UE5_C++多人TPS完整教程》学习笔记62 ——《P63 多人游戏中的开火特效(Fire Effects in Multiplayer)》
  • [特殊字符] 芋道项目中的参数校验机制详解:以 AppProductActivityListReqVO 为例
  • 网站发的文章如何优化抖音代运营协议模板
  • 三次B样条曲线在参数u(u 不是原始节点向量中的节点)处打断成两条B样条曲线的方法
  • 清华字节开源HuMo: 打造多模态可控的人物视频,输入文字、图片、音频,生成电影级的视频,Demo、代码、模型、数据全开源。
  • Python私教FastAPI+React构建Web应用03 FARM技术栈介绍
  • win11+4060安装cuda,cuda toolkit,cudnn
  • Python小说图片PDF生成器开发详解