基于NIOS-II的示波器:PART4 系统调试&测试
本文记录了在NIOS II上实现示波器的第四部分。
本文主要包括:修改部分BUG,以及测试
本文所有的硬件以及工程参考来自魏坤示波仪,重新实现驱动并重构工程。
version 1.0 界面修改&系统调试&测试
界面修改
在示波器0.1版本中已经说明了界面的编写方法,在确定了该版本的基本功能之后,重新设计界面以及按键如下:

其中s0~s5为下排功能选择按键,其中重要的有:
- 当通道选择为
CH1时,输入耦合选择的也是CH1 - 点按水平控制时,选择通过
s8 s9来调节对应通道的水平轴
其中s6~s15用来调节参数
s6 s7用来调节触发的levels10 ~ s14则按照左边屏幕上的说明操作
部分功能调整
按键中断陷入死循环BUG
在之前设计的策略中,s6~s15由于是用来调节参数,其在按键起来之前持续作用。于是将案件起来的判断放在了处理函数之中。但是中断结束之时对于按键弹起的操作又有单独判断。
根据不同按键分配不同策略。
即时处理STOP指令
将STOP指令的处理放到中断中,而非等待系统更新状态之后,这样能够更精准的响应STOP请求。
if (KEY_DATA == 4) {
//等待按键抬起
while (IORD_ALTERA_AVALON_PIO_DATA(KEY_PORT_BASE) != 0x03);
//切换暂停和启动模式
if (RUN_STOP_FLAG == 0){
RUN_STOP_FLAG = 1;
sprintf((char *) lcd_buffer, " STOP ");
display_ascii(322, 16, 0xf800, MENU_FULL_COLOR);
}
else{
RUN_STOP_FLAG = 0;
sprintf((char *) lcd_buffer, " RUN ");
display_ascii(332, 16, 0x07e0, MENU_FULL_COLOR);
}
} else {
//正常情况
if (RUN_STOP_FLAG == 0) {
if (KEY_DATA != 0xff) {
//将KEY_DATA传给CON_DATA
CON_DATA = KEY_DATA;
CON_FLAG = 1;
KEY_DATA = 0xff;
}
if (!(CON_DATA>=6 && CON_DATA <= 9)) {
//等待按键抬起
while (IORD_ALTERA_AVALON_PIO_DATA(KEY_PORT_BASE) != 0x03);
}
}
}
调整触发level以及CH1 level时水平轴及时刷新
/*
* 函数名:TRIG_CON
* 说明 :当输入为1则增加,若输入为1则减少
* 日期:2017-03-27
*/
void TRIG_CON(unsigned char flag) {
while (IORD_ALTERA_AVALON_PIO_DATA(KEY_PORT_BASE) != 0x03) {
if (flag == 1 && TRIG_DATA < 244)
TRIG_DATA++;
else if (flag == 0 &&TRIG_DATA > 11)
TRIG_DATA--;
//添加此处 能够及时刷新
DISP_TRIG(TRIG_DATA);
//向MEM_CTL模块中写入触发condition
IOWR_ALTERA_AVALON_PIO_DATA(TRIG_DATA_BASE, TRIG_DATA);
TL_LOOP = 0;
delay_ms(150);
}
}
增加系统初始化输出
在初始化LCD之后,对系统初始化的结果输出,用于跟踪系统的状态。

其中添加行与列变量,用于一行一行进行显示。
可以将该功能打包成系统输出函数,但后无需此功能,便直接写入到响应部分代码,并打包函数。
Version 1.0 版本测试
这里只给出示例测试,其余图片过大,不好上传。
正弦波测试

函数信号发生器输出
基于NIOS-II的示波器:PART4 系统调试&测试的更多相关文章
- 基于NIOS II的双端口CAN通信回环测试
基于NIOS II的双端口CAN通信回环测试 小梅哥编写,未经授权,严禁用于任何商业用途 说明:本稿件为初稿,如果大家在使用的过程中有什么疑问或者补充,或者需要本文中所述工程源文件,欢迎以邮件形式发送 ...
- FPGA回忆记事(一):基于Nios II的LED实验
实验一:基于Nios II的LED实验 一. 创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...
- 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等
[推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...
- Nios II 系统时钟timestamp的应用
在用Nios II做外设时序驱动的时候,经常会用延时函数.有时会常使用某个FPGA芯片和时钟,比如笔者一直使用的芯片是cyclone系列 EP2C35F484C8N,PLL输入SOPC时钟是50M.因 ...
- 在WIN7系统下用Quartus ii 11.1 NIOS II 11.1 有时候会出现Nios II 的Run as hardware 中报错:Downloading ELF Process failed
nios工程在编译通过后RUN的过程中出现Error Running Nios II Project: ‘Downloading ELF Process failed’问题原因: 1.nios2 cp ...
- [置顶]
基于FPGA的VGA简易显存设计&NIOS ii软核接入
项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...
- Nios ii调试问题集
如果定义了一个类的.hpp,而在相应的.cpp中定义其中的函数时,根本找不到定义的类,这说明类在定义时出错,要注意类括号后的冒号. 2. 问题1:NiosII/Eclipse 中遇到“Launchin ...
- Nios II系统在Quartus II编译后Timing requirements for slow timing model timing analysis were not met. See Report window for details
来自http://wenku.baidu.com/link?url=h0Z_KvXD3vRAn9H8mjfbVErVOF_Kd3h-BZSyF1r4sEYj3ydJGEfBHGY1mvntP4HDuF ...
- Nios II的Boot过程分析
目录 1 概述....................................................................... 1 2 几种常见的 ...
随机推荐
- 微信客户端+微信公众平台+新浪云SAE+Arduino+WS100(控制LED)
第一步:准备 1.智能手机微信客户端或微信电脑版 2.注册微信公众平台 https://mp.weixin.qq.com 3.注册新浪账号 http://www.sinacloud.com 4.拥有一 ...
- MATLAB的神经网络工具箱介绍
一.使用matlab2010b以后的版本会有完整的神经网络工具箱,使用nnstart可以调出toolbox,然后选择需要的功能,导入数据,选择训练参数和每层神经元个数,最后训练会输出网络与结果. 二. ...
- 42. leetcode 70. Climbing Stairs
70. Climbing Stairs You are climbing a stair case. It takes n steps to reach to the top. Each time y ...
- 谈谈渲染,玩玩nginx——前后端分离,转发请求到Tomcat的尝试
一.谈谈"渲染" 相信好多人都挺听过"渲染"这个词,但不清楚它是什么意思?前端开发以为这是后端的活儿,后端开发以为是前端的事儿,推着推着就不了了之.其实渲染很简 ...
- 初识Java,猜字游戏
import java.util.*; public class caizi{ public static void main(String[] args){ Scanner in=new Scann ...
- 用java调用.net的wcf其实还是很简单的
前些天和我们的一个邮件服务商对接,双方需要进行一些通讯,对方是java团队,而作为.net团队的我们,只能公布出去的是一个wcf的basicbinding,想不 到问题来了,对方不知道怎么去调用这 ...
- PAT (Basic Level) Practise (中文) 1017. A除以B (20)
1017. A除以B (20) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 CHEN, Yue 本题要求计算A/B,其中A是不超过 ...
- 基于 Vue 全家桶制作的移动端音乐 WebApp
- JAVA中extends 与implements的用法
1. 在类的声明中,通过关键字extends来创建一个类的子类.一个类通过关键字implements声明自己使用一个或者多个接口.extends 是继承某个类, 继承之后可以使用父类的方法, 也可以重 ...
- crm踩坑记(二)
Linux tmux 如何查看 tmux如何进行滚动呢? prefix + [, prefix为tmux的前置动作,默认是ctrl + b. 使用方向键或者pageUp来进行翻页. q可以退出滚动模式 ...