FPGA基础(verilog语言)——语法篇
verilog语言简介
verilog语言是一种语法类似于c的语言,但是与c语言也有不同之处,比如:
1.verilog语言是并行的,每个always块都是同时执行,而c语言是顺序执行的
2.verilog又被称作硬件描述语言,在用verilog语言编程的时候,不如说是在用verilog描述一段电路,而c语言则是一段程序
verilog基本语法
本块只讲常用的基本语法,至于一些高级的语法到以后案例的时候会讲到
verilog文件.v基本结构
module a(b, c, d,...z);//module: 模块头 a:模块名 (b,c,d,...z):端口列表
input b;//输入声明
input wire c;//输入声明线网类型用wire,wire可省略
input wire [:] d;//[7:0]:输入总线位宽0~7所以是8bit总线
output e;//输出声明
output [:] f;//输出总线位宽说明,默认为wire类型,此处省略wire
output reg [:] f;//输出总线寄存器类型用reg
...//为了篇幅小一些省略e~y的声明,实际代码中不可省略
assign d = a & b;//assign语句也叫数据流建模语句也叫连续赋值语句,后面接的是组合逻辑
assign e = (f < g)? : ;//三目运算符 always @ (posedge a or negedge b or posedge c...)//always语句,posedge为上升沿触发,negedge为下降沿触发,后面接信号表示当这个信号上升沿或下降沿时执行下面的程序
begin //begin...end 相当于()
if(!b)//if语句
begin
h <= 'b0000;//非阻塞赋值语句用<=,4'b0000表示位宽为4,二进制表示的数0000
i <= 'haabbccdd;//此处表示32位宽,16进制表示的数aabbccdd
end else//else表示分支
case(j)//case语句
: k <= k + 'b1;//verilog中没有自加的表示,所以用k = k + 1'b1
: if(k<m) begin l <= 'd7;j <= 2; end// j <= 2表示下一个时钟沿触发后跳到2:语句
: m < = 'b0001 << 2;//<<移位符号
default: j <=; //default语句表示当j取值不是上面列出的0,1,2时走这条语句
endcase //case多路分支语句结束标志
end//整个always循环结束标志
endmodule//整个模块结束标志
就讲这么多,以后有具体的例子再细讲
FPGA基础(verilog语言)——语法篇的更多相关文章
- Xamarin XAML语言教程基础语法篇大学霸
Xamarin XAML语言教程基础语法篇大学霸 前 言 Xamarin是一个跨平台开发框架.它可以用来开发iOS.Android.Windows Phone和Mac的应用程序.使用Xamarin框 ...
- FPGA基础入门篇(四) 边沿检测电路
FPGA基础入门篇(四)--边沿检测电路 一.边沿检测 边沿检测,就是检测输入信号,或者FPGA内部逻辑信号的跳变,即上升沿或者下降沿的检测.在检测到所需要的边沿后产生一个高电平的脉冲.这在FPGA电 ...
- Scala快速入门 - 基础语法篇
本篇文章首发于头条号Scala快速入门 - 基础语法篇,欢迎关注我的头条号和微信公众号"大数据技术和人工智能"(微信搜索bigdata_ai_tech)获取更多干货,也欢迎关注我的 ...
- R语言语法基础二
R语言语法基础二 重塑数据 增加行和列 # 创建向量 city = c("Tampa","Seattle","Hartford"," ...
- R语言语法基础一
R语言语法基础一 Hello world #这里是注释 myString = "hello world" print(myString) [1] "hello world ...
- GO语言基础(结构+语法+类型+变量)
GO语言基础(结构+语法+类型+变量) Go语言结构 Go语言语法 Go语言类型 Go语言变量 Go 语言结构 Go 语言的基础组成有以下几个部分: 包声明 引入包 函数 变量 语句 &a ...
- C语言函数篇(二)函数参数基础设计
形参实现一种数据传入的接口 ,由 实参 拷贝给 形参. 拷贝!!!!!!!!!!! 例1: void func(int tmp){ //意图是实现传进来的参数 +1 tmp++; } int mian ...
- FPGA基础知识了解
FPGA学习的一些误区 FPGA入门必看资源 FPGA百度百科 FPGA基础知识及其工作原理 高端设计工具为少有甚是没有硬件设计技术的工程师和科学家提供现场可编程门阵列(FPGA).无论你使用图形化设 ...
- 我的 FPGA 学习历程(01)—— FPGA 基础知识和 Quartus 的安装
高级的嵌入式市场主要分为以下三类:ARM.DSP 和 FPGA. 其中 ARM 是行业内的佼佼者,目前几乎所有的安卓智能手机都使用 ARM 授权的 CPU架构:而 DSP(数字信号处理器) 早年就被大 ...
随机推荐
- liunux中的标准输出。以及常用的 2>dev/null 命令的含义
了解Linux怎样处理输入和输出是非常重要的.一旦我们了解其原理以后,我们就可以正确熟练地使用脚本把内容输出到正确的位置.同样我们也可以更好地理解输入重定向和输出重定向. 首先我们来了解一下linux ...
- Js极客之路 - 简化操作
1.对字符串使用单引号(避免动态添加元素时html会出现的双引号"引起的冲突,方便操作 - 单引号一个键,双引号两个键) // bad var name = "Barrior&qu ...
- Web登录中的信心安全问题
1. 一个简单的HTML例子看看用户信息安全 标准的HTML语法中,支持在form表单中使用<input></input>标签来创建一个HTTP提交的属性,现代的WEB登录中, ...
- spring cloud 网关服务
微服务 网关服务 网关服务是微服务体系里面重要的一环. 微服务体系内,各个服务之间都会有通用的功能比如说:鉴权.安全.监控.日志.服务调度转发.这些都是可以单独抽象出来做一个服务来处理.所以微服务网关 ...
- Zookeeper - 什么是Zookeeper,以及zookeeper的安装(1)
Zookeeper 什么是Zookeeper? 官网传送门 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的 ...
- .NET 任务调度 ,基于Quartz.Net
本文中使用的为 Quartz Enterprise Scheduler .NET,版本为 3.0.8 . 架构拓扑图如下: 集群需要配置: #是否集群 true falsequartz.jobStor ...
- fenby C语言 P27使用指针
使用指针 p代表地址 *p代表这个地址存放的内容 #include <stdio.h> int main(){ int x=100,y=200,*p1=&x,*p2=&y; ...
- python实现人工智能Ai抠图功能
这篇文章主要介绍了python实现人工智能Ai抠图功能,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 自己是个PS小白,没办法只能通过技术来证明自己. 话不多说, ...
- ORM之单表操作
ORM简介 MVC或者MVC框架中包括一个重要的部分,就是ORM,它实现了数据模型与数据库的解耦,即数据模型的设计不需要依赖于特定的数据库,通过简单的配置就可以轻松更换数据库,这极大的减轻了开发人员的 ...
- hyper-v虚拟机上的centos多节点k8s集群实践
之前体验了minikube,掉深坑里至今还没有爬出来,玩单节点用minikube够了, 但傻瓜试的安装让人对k8s理解不是很深刻(坑),而且多节点好像有什么奇怪的问题 所以我这次要用两个虚拟机来模拟k ...