FPGA笔记
来源:互联网 发布:日本创业公司数据库 编辑:程序博客网 时间:2024/06/13 06:36
1.模块的名称要和文件名一致
2.case语句中所以的条件是同时顺序执行的
3.1s=1000 ms 1ms=1000 us1us=1000ns
4.波特率与系统时钟
波特率(如9600bps)指的是每秒传送的比特的个数。继而我们可以算出传输一个比特需要多长时间。即1/9600S
而系统时钟(如50HZ即20ns)需要计数多少次可以达到1/9600s,即1/9600*109 /20 次。即计数这么多次反转输出信号就可以得到波特率的时钟,波特率的波形。但我们经常用到的不是波特率的时钟,而是波特率波形中间点的时钟,在中间点我们可以选择接收还是发送数据,这时我们可以再计一个1/9600*109 /20 /2次的系统时钟,然后让输出反转。程序见常用Verilog HDL程序
5.模块化程序的设计
先要画出你设计程序的一个RTL的视图,从图中可以清楚的看出每一个模块的输入输出信号,然后在去分别的设计这些模块,最后在顶层文件中例化,,顶层模块中包含了系统的输入输出引脚。
如图是一个RTL的视图。。
RTL视图的设计 就是实例化设计---这个和Q中的用图形编辑器或者叫块编辑器设计是一样的。。。。
6.在Verilog中有两种结构化的过程语句:initial语句和always语句。它们是行为建模的两种基本语句,其他的所有行为语句只能出现在过程语句里。无论Verilog的程序多么复杂,其只含有initial和always 语句,initial语句在仿真中应用,即应用程序中只可以出现always过程语句。
7.在一个过程语句中非阻塞语句是并发进行的。不要在同一个always中混合使用阻塞和非阻塞赋值语句
8.Verilog中有四种类型的循环语句:while for repeat forever 循环语句只能在always 和initial块中使用
9.reg型的数据的默认初始值是不定值X,reg型只表示被定义的信号将用在always 块内
10.FPGA的所有IO控制块允许每个I/O 引脚单独配置为输入口,不过这种配置是系统自动完成的。当该I/O 口被设置为输入口使用时(如定义key0 为输入引脚:input key0;),该I/O 控制模块将直接使三态缓冲区的控制端接地,使得该I/O 引脚对外呈高阻态,这样该I/O 引脚即可用作专用输入引脚。
11.执行完case分项后的语句后,则跳出该case语句结构,终止case语句的执行。 case 语句所有表达式的值的位宽必须相等,只有这样控制表达式和分支表达式才能进行对应位的比较。
12.数码管的动态扫描显示时刷新率最好大于50HZ,即每显示一轮的时间不超过20ms。每个数码管显示的时间不能太长也不能太短,时间太长会影响刷新率,导致总体显示呈现闪烁的现象;时间太短发光二极管的电流导通时间也就短,会影响总体的显示亮度。一般控制在1ms左右最佳。即数码管的时钟设置为1000Hz
13.s ms(10-3s) us(10 -6s) ns(10 -9s) ps(10 -12s)
14. verilog程序一定要写规范。。否则后有意想不到的后果。。像有if 就要有else 等等。。
一定不可以像下面这样
if(rst_out)
temp[3]<=1'b0;
temp[0] <= temp[0] ^ temp[3] ^ !(|temp[3:0]);
temp[3:1] <= temp[2:0]; 不要理所当然的对
15.FIFO模块的时序图
- FPGA笔记
- FPGA学习笔记
- FPGA 学习笔记
- FPGA学习笔记1
- FPGA学习笔记敬请期待
- FPGA零散笔记
- FPGA笔记(一)
- FPGA笔记(二)
- FPGA笔记(三)
- FPGA笔记(四)
- FPGA笔记(五)
- FPGA笔记(六)
- FPGA 基础知识笔记1
- FPGA 基础知识笔记2
- HELLO FPGA学习笔记
- FPGA个人笔记
- FPGA学习笔记
- FPGA学习笔记
- 树莓派home目录
- zk系列-zookeeper概述
- MySQL MyISAM InnoDB 简述
- 目录指南
- HDU 5035(未AC)
- FPGA笔记
- 程序员编程艺术:第四章、现场编写类似strstr/strcpy/strpbrk的函数
- android电量自动关机时如果有来电自动关断电话
- WordPress中实现Ajax的方法
- 15个常用的JQuery小插件
- 深入理解JAVA JDK动态代理机制
- Ekka Dokka
- Apple 企业开发者账号&邓白氏码申请记录
- 用js实现在加载完成一个页面后自动执行一个方法