本文记录了在NIOS II上实现示波器的第四部分。

本文主要包括:修改部分BUG,以及测试

本文所有的硬件以及工程参考来自魏坤示波仪,重新实现驱动并重构工程。

version 1.0 界面修改&系统调试&测试

界面修改

在示波器0.1版本中已经说明了界面的编写方法,在确定了该版本的基本功能之后,重新设计界面以及按键如下:

其中s0~s5为下排功能选择按键,其中重要的有:

  • 当通道选择为CH1时,输入耦合选择的也是CH1
  • 点按水平控制时,选择通过s8 s9来调节对应通道的水平轴

其中s6~s15用来调节参数

  • s6 s7用来调节触发的level
  • s10 ~ 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 系统调试&测试的更多相关文章

  1. 基于NIOS II的双端口CAN通信回环测试

    基于NIOS II的双端口CAN通信回环测试 小梅哥编写,未经授权,严禁用于任何商业用途 说明:本稿件为初稿,如果大家在使用的过程中有什么疑问或者补充,或者需要本文中所述工程源文件,欢迎以邮件形式发送 ...

  2. FPGA回忆记事(一):基于Nios II的LED实验

    实验一:基于Nios II的LED实验 一.    创建Quartus II工程 1.打开Quartus II环境.开始->程序->Altera->Quartus II 9.1. 2 ...

  3. 【推荐图书】+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等

    [推荐图书]+ 基于Nios II的嵌入式SoPC系统设计与Verilog开发实例+C#入门经典等 3赞 发表于 2016/7/4 21:14:12 阅读(1921) 评论(3) 初次接触FPGA,到 ...

  4. Nios II 系统时钟timestamp的应用

    在用Nios II做外设时序驱动的时候,经常会用延时函数.有时会常使用某个FPGA芯片和时钟,比如笔者一直使用的芯片是cyclone系列 EP2C35F484C8N,PLL输入SOPC时钟是50M.因 ...

  5. 在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 ...

  6. [置顶] 基于FPGA的VGA简易显存设计&NIOS ii软核接入

    项目简介 本项目基于Altera公司的Cyclone IV型芯片,利用NIOS II软核,2-port RAM与时序控制模块,实现64*48分辨率的显存(再大的显存板载资源m9k不够用) 实现效果如下 ...

  7. Nios ii调试问题集

    如果定义了一个类的.hpp,而在相应的.cpp中定义其中的函数时,根本找不到定义的类,这说明类在定义时出错,要注意类括号后的冒号. 2. 问题1:NiosII/Eclipse 中遇到“Launchin ...

  8. 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 ...

  9. Nios II的Boot过程分析

    目录 1       概述....................................................................... 1 2       几种常见的 ...

随机推荐

  1. [补档][Poi2010]Monotonicity 2

    [Poi2010]Monotonicity 2 题目 给出N个正整数a[1..N],再给出K个关系符号(>.<或=)s[1..k]. 选出一个长度为L的子序列(不要求连续),要求这个子序列 ...

  2. web端常见安全漏洞测试结果分析-- appscan

    基于appscan测试结果分析: 一.XSS跨站脚本 指的是攻击者往Web页面里插入恶意html代码,通常是JavaScript编写的恶意代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被 ...

  3. 阿里云直播SDK - .NET

    阿里云sdk:https://develop.aliyun.com/sdk/csharp?spm=5176.doc27234.2.4.QiJb9l Github:https://github.com/ ...

  4. Go的类型断言解析

    经常地我们对一个接口值的动态类型是不确定的,如方法的形参为接口类型时,此时就需要检验它是否符合我们需要的类型.类型断言是一个使用在接口值上的操作.断言类型的语法:x.(T),这里x表示一个接口的类型, ...

  5. 《Java从入门到放弃》入门篇:springMVC数据传递

    springMVC中的数据传递方式与JSP和Struts2相比,更加的简单.具体有什么样的区别呢?我们通过下面这张图来对比就知道了. 随手画的,有些错别字,不用太在意..... 接下来,进入正题,sp ...

  6. Quartus16.0如何使用TCL脚本

    前言 TCL脚本语言在EDA工具中使用频繁,本文主要介绍使用TCL脚本文件进行引脚分配,避免手动分配以及分配出错: 流程 1.准备好你的TCL脚本文件,举个栗子(脚本文件内容): 2.在Quartus ...

  7. java多线程系列(七)---Callable、Future和FutureTask

    Callable.Future和FutureTask 前言:如有不正确的地方,还望指正. 目录 认识cpu.核心与线程 java多线程系列(一)之java多线程技能 java多线程系列(二)之对象变量 ...

  8. ML: 聚类算法R包-模糊聚类

    1965年美国加州大学柏克莱分校的扎德教授第一次提出了'集合'的概念.经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面.为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析.用模 ...

  9. SQL之运算符操作

    算数运算符: 用select可以实现加减乘除,求模操作等: 加法操作,      减法操作,      乘法操作,      除法操作,      DIV 除法操作,      求模操作,      ...

  10. python 如何在一个for循环中遍历两个列表

    是我在看<笨方法学python>过程中发现有一行代码看不懂--" for sentence in snippet, phrase:",所以研究了半天,感觉挺有收获的.所 ...