FPGA 流水灯
VerilogHDL那些事儿_建模篇(黑金FPGA开发板配套教程)
作者:akuei2
说明:参照该书将部分程序验证学习一遍
学习时间:2014年5月2号
主要收获:
1. 对FPGA有初步了解;
2. 功能模块和控制模块;
3. 并行操作的思维;
4. 使用"并行操作"进行流水灯实验。
FPGA是什么?
1. 一个很好的比喻是:FPGA是"一堆乐高积木",而Verilog是"搭积木的手"。FPGA并没有实际的形状,要通过Verilog描述出形状来。
2. 新手们常常忽略了,FPGA其实是并存着"顺序操作"和"并行操作"的操作概念。如果打从一开始就忽略了它们,往后的日子很难避免遇见瓶颈。
过程赋值和assign连续赋值:
1. 过程赋值改变一个寄存器的状态,是时序逻辑,用在initial和always里面;
2. 连续赋值是组合逻辑,驱动线型变量(wire)。
流水灯实验:
1. 系统整体模块以及每个功能模块示意图:


2. RTL原理图
RTL(寄存器传输级):描述数据在寄存器之间怎么流动和如何处理这些数据的模型。

3. 控制模块为top_module,功能模块有led1_module~led4_module。
module top_module(CLK, RSTn, LED_Out);
input CLK;
input RSTn;
output [3:0]LED_Out;
wire LED1_Out;
led1_module U1
(
.CLK(CLK),
.RSTn(RSTn),
.LED_Out(LED1_Out)
);
wire LED2_Out;
led2_module U2
(
.CLK(CLK),
.RSTn(RSTn),
.LED_Out(LED2_Out)
);
wire LED3_Out;
led3_module U3
(
.CLK(CLK),
.RSTn(RSTn),
.LED_Out(LED3_Out)
);
wire LED4_Out;
led4_module U4
(
.CLK(CLK),
.RSTn(RSTn),
.LED_Out(LED4_Out)
);
assign LED_Out = {LED4_Out, LED3_Out, LED2_Out, LED1_Out};
endmodule
module led1_module(CLK, RSTn, LED_Out);
input CLK;
input RSTn;
output LED_Out;
parameter T10MS = 2'd3;
reg[1:0]Count1;
always@(posedge CLK or negedge RSTn)
if(!RSTn)
Count1 <= 2'd0;
else if(Count1 == T10MS)
Count1 <= 2'd0;
else
Count1 <= Count1 + 1'b1;
reg rLED_Out;
always@(posedge CLK or negedge RSTn)
if(!RSTn)
rLED_Out <= 1'b0;
else if(Count1 == 2'd0)
rLED_Out <= 1'b1;
else
rLED_Out <= 1'b0;
assign LED_Out = rLED_Out;
endmodule
4. 仿真如下:

知识点~~~
1. 硬件描述语言 Hardware Description Language;
2. HDL采用自顶向下的电路设计方法,主要可以分为五个抽象层次:

3. HDL语言是有时序概念的,这和平常的编程语言不一样。
FPGA 流水灯的更多相关文章
- FPGA——流水灯(一)
对于FPGA的结构原理,先不进行全面的了解,先能根据教程程序看得懂,写得出来跑起来.慢慢的了解程序运行的原理,各种语法的使用. 今天对流水的程序有一个认识,熟悉软件的使用,语法规则,原理.以正点原子的 ...
- 第一个FPGA工程—LED流水灯
这一章我们来实现第一个FPGA工程-LED流水灯.我们将通过流水灯例程向大家介绍一次完整的FPGA开发流程,从新建工程,代码设计,综合实现,管脚约束,下载FPGA程序.掌握本章内容,大家就算正式的开始 ...
- 【黑金原创教程】【FPGA那些事儿-驱动篇I 】【实验一】流水灯模块
实验一:流水灯模块 对于发展商而言,动土仪式无疑是最重要的任务.为此,流水灯实验作为低级建模II的动土仪式再适合不过了.废话少说,我们还是开始实验吧. 图1.1 实验一建模图. 如图1.1 所示,实验 ...
- NIOS ii 流水灯
为了做项目的前期验证工作,实验室购买了某开发板,下面是基于该板子的实现过程.作为笔记记录,供入门者参考. 1:创建一个Quartus II的工程 next选择器件,然后finish.我的器件是cycl ...
- Xilinx Vivado的使用详细介绍(4):Zedboard+vivado之流水灯(加SDK)
Vivado+zedboard之初学流水灯 Author:zhangxianhe 环境:vivado 2016.3(已验证适用于2015.4) 开发板:Zedboard version xc7z020 ...
- 【接口时序】2、Verilog实现流水灯及与C语言的对比
一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1.FPGA型号:XC6SLX45 ...
- Zedboard学习(三):PL下流水灯实验 标签: fpgazynqPL 2017-07-05 11:09 21人阅读 评论(0)
zynq系列FPGA分为PS部分和PL部分. PL: 可编程逻辑 (Progarmmable Logic), 就是FPGA部分. PS: 处理系统 (Processing System) , 就是与F ...
- S5PV210_流水灯
1.整体思路:把相应的配置数据写入相应的寄存器,控制GPIO电平(Led.s)——运用工程管理Makefile编译.链接文件(由Led.s编译得到led.bin,该文件用于USB启动方式点亮LED,若 ...
- (一)GPIO 编程实验 LED 流水灯控制
7个寄存器 是R1-R16.(当然,里面有很多是分几个模式的,所以总共有37个)类似于单片机的R0-R7. GPXCON,GPXDAT等等是另外的寄存器,应该叫,特殊功能寄存器,类似于单片机的P0,P ...
随机推荐
- python实现经典的排序算法
排序 关注公众号"轻松学编程"了解更多. 1.冒泡排序 基本思想:比较相邻的元素大小,将小的前移,大的后移,就像水中的气泡一样,最小的元素经过几次移动,会最终浮到水面上.原地排序, ...
- 直播APP源码是如何实现音视频同步的
1. 音视频同步原理 1)时间戳 直播APP源码音视频同步主要用于在音视频流的播放过程中,让同一时刻录制的声音和图像在播放的时候尽可能的在同一个时间输出. 解决直播APP源码音视频同步问题的最佳方案 ...
- 7.1range函数和冒泡排序
range函数和冒泡排序 一.range函数 在Python开发应用中 range函数相当重要,也比较常用: 首先看range函数的原型: range(start, end, scan) 参数 ...
- 它是世界上最好的语言,吊打PHP那种
Scratch Scratch是麻省理工媒体实验室终身幼稚园组开发的一套电脑程序开发平台,旨在让程序设计语言初学者不需先学习语言语法便能设计产品.开发者期望通过学习Scratch,启发和激励用户在愉快 ...
- 1. 安装虚拟机,Hadoop和Hive
由于想自学下Hive,所以前段时间在个人电脑上安装了虚拟机,并安装上Hadoop和Hive.接下我就分享下我如何安装Hive的.步骤如下: 安装虚拟机 安装Hadoop 安装Java 安装Hive 我 ...
- C++ Split string into vector<string> by space(转)
c++中没有这么方便的实现,但也有很多的方法能实现这个功能,下面列出五种常用的实现的方法,请根据需要选择,个人觉得前三种使用起来比较方便,参见代码如下: #include <vector> ...
- psycopg2模块安装问题
我的平台是win10(x64).python3.7,打算通过psycopg2模块来操作Greenplum数据库,我通过pip install psycopg2 安装了psycopg2模块,也提示安装成 ...
- python3中的os.path模块
os.path模块主要用于获取文件的属性,这里对该模块中一些常用的函数做些记录. os.abspath(path):获取文件的绝对路径.这里path指的是路径,例如我这里输入"data.cs ...
- Spring源码之Bean生命周期
https://www.jianshu.com/p/1dec08d290c1 https://www.cnblogs.com/zrtqsk/p/3735273.html 总结 将class文件加载成B ...
- nginx配置代理缓存
nginx可以实现反向代理的配置,并且可以使用缓存来加速,本文是简单的实现功能的配置,暂时没有做其他的优化的部分的配置,从网上的资料来看,很多配置都是没有讲哪些是必须配置的,我自己在配置过程中就发现没 ...