基于Xilinx Artix-7 xc7a35t 的数字电子设计实战课程(四)

基于Xilinx7 xc7a35t 的FPGA开发日记(四)

没想到在短短几天之内我的博客访问量就近千了,感谢大家的支持。接下来我会将更多的经验和技术分享给大家。但其实我也是入门级选手,所以如果有错误请大家不吝赐教,谢谢!

我们来进行实战开发前的最后一课:Verilog硬件语言的学习。
这节课先将一些基础知识和数据类型,下节课会将运算符和赋值语句。

Verilog HDL 语言是目前最流行的两种硬件语言之一,因为设计这门语言很大程度上参考了C语言的思路,所以之前学习过C语言的同学可以轻松掌握这门语言。

在这里插入图片描述
首先,在Verilog开发环境中一共有以上四种逻辑状态。
在Verilog中表示数字的方法有三种:
1.<位宽>’<进制><数字>
2.<进制><数字> (这种方式缺位宽,此时至少有32位)
3.<数字> (这种方式默认为十进制,位宽32位)

任何一门语言都有数据类型,Verilog的数据类型分为:
线网型(net) 和 变量型。

一、线网型

顾名思义,实际上就是在FPGA内部以线(“与”逻辑运算)连接的量。例如我配置一个D触发器的输出为Q1,然后我定义一个线网型变量A等于Q1,于是A就一直随着Q1的值变化。
线网型数据有两个关键词,第一个是wire,意思就是线,他代表的就是定义一个量,在接下一直随着另一个量的变化而变化,比如说

wire clk_out;
assign clk_out = c_out; //这里的assign是一个赋值语句,后面会说

这两行代码的意思就是定义一个线网型变量 clk_out ,它的值等于c_out变量,并且随着c_out 的变化而变化。

第二个关键词是parameter,它的作用是定义一个标识符,也就是常量,类似于c语言的宏定义。parameter 是可以重定义的。

parameter width = 3;

//这行代码的意思就是定义一个常量等于3,也就是说接下来代码中出现 width,程序就会自动将它替换成3。

二、变量
变量一共只有一个关键字reg,对应着我们能够完成时序电路功能的寄存器,所以reg也被称为寄存器型。

存储器的标准定义形式是:

reg [msb:lsb] memory [upper:lower]

例如:
reg[3:0] memory1[63:0]
//定义memory1 为64个4位寄存器数组
而常用的也有:
reg[4:0] dog ; //没有说明个数,默认一个,也就是定义了一个5位寄存器dog。

数据类型的介绍就到这里,在下节课讲述运算符和赋值语句之前,我们还需要说一些Verilog语言中的注意事项:

  1. Verilog程序由模块构成,每个模块嵌套在module 和 endmodule的声明之中。
  2. 每个source file 只能有一个顶层模块。
  3. 每个模块要进行端口定义,例如 module A (input b,outout c) //定义一个模块A,它有一个输入量b,一个输出量c。
  4. 时序部分在always块内,在其中只能对寄存器变量赋值。
  5. 对线网型变量只能在always块外赋值。
  6. Verilog程序格式自由,一行可以书写多个语句,一个语句也可以分多行书写。
  7. 除了endmodule、begin、end、fork、join外,每个语句和数据定义最后要有分号。
  8. 可用// 和 / /…进行注释。

本节课的学习就到这里,很快我们会更新下节课结束verilog的学习,并且进入实战环节。如果想进行实战操作的同学请到Xlinx网站下载Vivado(版本至少2017)并且注册免费获得lisence。

谢谢观看!

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值