第八周---FPGA流水灯显示和串口循环输出实验
文章目录
- 前言
- 1.流水灯显示
- 2.串口循环输出“Hello Nios-II”字符串到笔记本电脑
前言
学习 Quartus-II 、Platform Designer、Nios-II SBT 的基本操作;初步了解 SOPC 的开发流程,基本掌握 Nios-II 软核的定制方法;掌握 Nios-II 软件的开发流程,软件的基本调试方法。
完成以下实验:1) 流水灯显示; 2) 串口循环输出“Hello Nios-II”字符串到笔记本电脑。
1.流水灯显示
第一步:从开始菜单启动Quartus II 13.1(64 bit) ,如下
第二步:菜单栏选择File—>New Project Wizard,新建工程
第三步:弹出新建工程对话框,点击Next,下一步
第三步:如下图,依次设置工程的存放路径,工程名称,顶层文件名称,如图依次设置好,这里我们将所有工程相关的文件放在prj文件夹内,便于工程文件与源码文件的管理,同时要保持工程名称与顶层实体名称一致,继续Next
第四步:添加设计文件,这一步我们不需要添加,后续我们会新建相应的代码文件。这里继续Next
第五步:选择FPGA器件,如图所示,这里我们选择器件家族是CycloneIV系列的,封装是FBGA,管脚数为256,速度等级为8。这里速度等级越小,速度越快。这里我们FPGA的具体型号为EP4CE6F17C8。大家通过这个对话框了解这个器件的基本资源。这里我简单介绍一下这些资源的名称,在后面的章节里我们还会详细讲解FPGA内部资源与结构。
1、CoreVoltage是内核电压,Cyclone IV的内核电压是1.2V。
2、LE是Altera最基本的逻辑单元,LEs表示FPGA的所有的逻辑资源, 我们这款芯片的逻辑资源数为6272。
3、User I/Os表示用户IO数,这里共有180个IO可以供用户使用。
4、Memory Bits与embedded multiplier 9-bit elements实际是一回事,后者简称M9K,M9K就是指位宽为9bit,深度为1K的RAM。这里一共有30个M9K,大家计算一下9102430=276480就是Memory Bits。
5、PLL锁相环,内部一共有两个锁相环。
6、Global clocks全局时钟网络数,这里一共有10个。设计中的时钟信号会优先全局时钟资源。
第六步:设置EDA工具,这里我们就设置一下仿真工具,使用默认Modelsim
-Altera,语言选择Verilog。实际后面我们不建议大家使用Modelsim-Altera。我们会推荐大家在直接使用Modelsim-SE,后者的通用性更强。继续Next。
第七步:总结新建工程的基本信息。到这里就完成工程的建立
第八步:新建verilog源文件,如下图,点击新建文件图标,或者通过菜单栏File—>New打开新建文件向导
在新建文件向导中,选择Verilog HDL File,点击OK。
因为我们已经配置过UltraEdit为默认编辑器,此时会打开UltraEdit(注意:UltraEdit编辑Verilog代码前,要添加语法高亮文件,详见3.3.3节内容),弹出新建源文件,将源文件另存至src文件夹下,命名为led_test.v与顶层实体名称一致。我们将源码文件和工程文件放在不同文件夹下,方便日后的工程维护。
编写代码逻辑,这里我们实现了一个流水灯。这里我们用了一个27位的计数器,时钟频率为50MHz,周期为20ns,当计数到第25位置位时,计数器值为25’d16777216,此时时间为16777216*20ns=335ms。这样每大约经过335ms,计数器的[26:24]位就会加1。我们第一个always实现计数器,第二个always实现控制不同时间时LED的输出,即每隔335ms改变一次LED的输出状态
实验代码:
module led_test(input i_clk, //input clk ,50mhzinput i_rst_n, //reset, active lowoutput reg [3:0]o_led //led out);reg [26:0] led_count; //-------------------------------------------------------------------
// 流水灯计数器
//-------------------------------------------------------------------
always @ (posedge i_clk or negedge i_rst_n)beginif(!i_rst_n)led_count <=27'd0; elseled_count <=led_count + 27'd1; end//-------------------------------------------------------------------// 计数器bit24置1,表示已大约计数335ms,每隔335ms,led_count[26:24]自动加1//------------------------------------------------------------------- always @ (posedge clk or negedge i_rst_n)beginif(!i_rst_n)o_led <=4'b1111; else begincase(led_count[26:24]) //when 25th bit set= 335ms3'b000: o_led<= 4'b1110; 3'b001: o_led<= 4'b1101; 3'b010: o_led<= 4'b1011; 3'b011: o_led<= 4'b0111; 3'b100: o_led<= 4'b1100; 3'b101: o_led<= 4'b1001; 3'b110:o_led <= 4'b0011;3'b111: o_led<= 4'b0000; default: o_led<= o_led; endcaseendend
endmodule
2.串口循环输出“Hello Nios-II”字符串到笔记本电脑
第一步 创建工程如同1中的一样
第二步:选择合适芯片进行FPGA开发
第三步 设置tools中Qsys设置
第四步 配置,线路连接:
第五步 然后保存文件,关闭Qsys。
回到Quarters,选择New->Verilog HDL File。
实验代码
module hello_world(input clk,input reset_n
);
//此处的代码可以通过Qsys中的Generate->Generate Example,复制里面的内容,粘贴到此处,进行相应的修改
system_qsys u_qsys (.clk_clk (clk), // clk.clk.reset_reset_n (reset_n) // reset.reset_n);endmodule
第六步 打开Nios II Software Build Tools for Eclipse
File->New->Nios II Application and BSP from Template
第七步 打开hello_world中的.c
#include <stdio.h>
int main()
{printf("Hello world!\n");return 0;
}
点击保存,选择hello_wold_bsp,右键后,选择Nios II中的Generate BSP
第八周---FPGA流水灯显示和串口循环输出实验相关推荐
- FPGA流水灯和跑马灯
FPGA流水灯和跑马灯 流水灯和跑马灯的区别: 流水灯具体实现: 跑马灯具体实现: 流水灯和跑马灯的区别: 流水灯顾名思义就是让 LED 如同流水一般,从无灯亮,到亮一个,再到亮二个,以此类推,亮 3 ...
- [Keil][Verilog][微机原理] 流水灯、存储器、外部中断实验_北京邮电大学计算机原理与应用课程实验报告
计算机原理与应用实验-流水灯.存储器.外部中断实验 1 实验一 流水灯实验 1.1 实验目的 掌握ARM开发工具的使用. 掌握基本IO的使用. 1.2 实验原理及内容 电路结构图 实现流水灯的电路结构 ...
- 基于STM32安装Stm32CubeMX,配合Keil完成LED流水灯和USART串口通讯程序,及其管脚的时序波形观察
目录 一.使用HAL库完成LED流水灯 (一).用STM32CUBEMX生成工程文件 (二).用Keil仿真调试并生成hex文件 (三).用STM32串口烧录程序 (四).实物连接 二.使用HAL库完 ...
- FPGA流水灯(间隔1S)
代码: `timescale 1ns/1ns module zyl_light(input clk,input rst,output reg[3:0] led_out );//1s一次,计数50000 ...
- 基于FPGA的花样流水灯
今天一个学弟来问我关于状态机的事,我就给他讲了下经典的三段式状态机,然后就让他试着用状态机去点亮几个LED灯. 状态一:让所有的灯全部熄灭:状态二:全部的灯按照奇偶位的来进行闪烁:状态三:全部的灯从左 ...
- FPGA拨码开关控制流水灯(VHDL)
一.实验目的 1.根据FPGA 开发板资源设计拨码开关控制流水灯实验: 2.利用VHDL 语言自行设计拨码开关控制流水灯程序: 3.在FPGA 开发板上验证. 二.实验原理 FPGA 芯片外部输入的固 ...
- verilog 8位流水灯_用单片机控制的LED流水灯设计
1.引言 当今时代是一个新技术层出不穷的时代,在电子领域尤其是自动化智能控制领域,传统的分立元件或数字逻辑电路构成的控制系统,正以前所未见的速度被单片机智能控制系统所取代.单片机具有体积小.功能强.成 ...
- 基于 Nios II 的串口打印和流水灯设计【使用 Quartus 软件】【掌握 SOPC 开发流程】
目录 一.前言 二.实验步骤 第一步:硬件部分设计 1)建立新项目 2)进行 Qsys 系统设计 3)完成 Qsys 设计的后续工作 4)原理图设计 5)编译工程及物理针脚分配. 第二步:软件部分设计 ...
- 单片机led流水灯实验c语言程序,单片机LED流水灯实验及流程图源代码详解
利用实验室提供的单片机实验开发板的最小系统电路模块.流水灯电路模块,以及Protues仿真软件搭建电路,实现I/O口循环流水灯演示效果. LED流水灯控制电路如图2-1所示,八个LED灯D0-D7(可 ...
最新文章
- Oracle Connect to an idle instance
- VR/AR行业发展至今,它的市场规模如何
- luoguP5035金坷垃
- 清华90后博士后万蕊雪:科研这场马拉松,我会一直跑下去
- linux系统无法识别固态硬盘_linux查看硬盘是不是ssd
- OpenCV中Mat属性step,size,step1,elemSize,elemSize1
- 百度C2C对决淘宝的两把利器
- 拓端tecdat|matlab估计arma garch 条件均值和方差模型
- 毕设题目:Matlab电力负荷预测
- PLSQL注册码,亲测,可用
- wampserver图标为绿色,打开localhost页面错误提示:The requested URL / was not found on this server
- PS中添加插件 无法加载扩展,未经正确签署的解决方法
- SSH服务移植到ARM单板
- Disney Springs - 迪士尼之泉
- 操作系统原理分析实验
- SpringBoot 项目文件上传过大报错不返回解决方案
- 跨境电商wish账户被禁用暂停的原因有哪些?wish店铺封号注意事项
- HTML中的bgcolor,background,与color的初步小节
- 线性稳压电源和开关电源到底有什么区别
- 易知微入选「2022爱分析·低代码厂商全景报告」|共创数字孪生未来