基于NiosⅡ软核处理器的七段数码管动态显示

发布者:Yuexiang666最新更新时间:2007-12-25 来源: 现代电子技术关键字:接口  总线  输出  存储 手机看文章 扫描二维码
随时随地手机看文章

SOPC(System On Programmable Chip)技术是美国Altera公司于2000年最早提出的,并同时推出了相应的开发软件Quartus II。SOPC是基于FPGA解决方案的SOC(System On Chip),构成SOPC的方案也有多种。第一种是基于FPGA嵌入IP硬核的SOPC系统,即在FPGA中事先植入嵌入式系统处理器,目前最常用的嵌入式处理器大多采用了含有ARM的32位知识产权处理器核的器件。第二种是基于FPGA嵌入IP软核的SOPC系统,目前最有代表性的软核处理器分别是Altera公司的Nios II核,以及Xilinx公司的MicroBlaze核。第三种是基于HardCopy技术的SOPC系统,HardCopy就是利用原有的FPGA开发工具,将成功实现于FPGA器件上的SOPC系统通过特定的技术直接向ASIC转化。

1 基于Altera公司NiosⅡ软核处理器的SOPC系统

Altera公司Nios II软核是目前使用最为广泛的一种软核处理器。值得一提的是,利用Matlab和Altera公司的DSP Builder,用户可以为Nios II软核处理器设计各类DSP硬件加速器,并以指令的方式加入Nios II的指令集,从而可以构建自己的DSP处理器系统。

1.1 基于NiosⅡ软核处理器的SOPC系统结构

如图1所示的一个基本的基于NiosⅡ软核的SOPC系统,除NiosⅡ核、定时器和片上存储器以外,还需要在FPGA器件中添加一些接口元件。这些元件一方面通过片上的Avolon总线与NiosⅡ软核相连,另外一方面又提供了外设与NiosⅡ软核通信的接口界面。

Altera公司QuartusⅡ软件中的SOPC Builder工具提供了许多常用的外设接口元件,如UART接口元件、PIO接口元件等,通过这些接口元件可以连接诸如RS232、LED、数码管和按键等输入输出设备。在相对复杂的系统设计当中,还可以通过Avalon三态总线桥外接大容最的SRAM和FLASH,以提供更大的程序和数据存储空间。从图1中,还可以注意到,通过使用系统提供的用户自定制外设接口元件的功能,用户可以在系统中添加一个符合Avalon总线规范的外设接口元件,以连接用户特定功能的外部设备。

1.2 自定制Avalon用户外设接口元件简介

对于自定制的Avalon外设接口元件按照Avalon总线操作的不同可以分为两类:Avalon Slave外设接口元件型的自定制的Avalon Slave外设接口元件框图。从图2中可以看到寄存器的定义是自定制外设接口元件很重要的一部分,必须根据设计的需要确定寄存器的个数和种类。图2中的Avalon Slave接口提供了自定制外设接口元件与NiosⅡ处理器之间数据交换的界面,其接口信号类型也必须根据设计的需要合理地进行选择。常用的Avalon Slave接口信号类型有:clk,chipselect,address,write,writedata,byteenable,reset等。图2中的任务逻辑具体说明了自定制外设接口的功能,并给出了与外设连接的接口信号。

自定制Avalon Slave外设接口元件的方法:可以利用SOPC Builder提供的元件编辑器在图形用户界面下将用硬件描述语言(Verilog或VHDL)描述的用户逻辑封装成一个SOPC Builder元件。相应的硬件描述语言文件给出了自定制外设接口元件的内部寄存器结构,使用到的Avalon Slave接口信号和自定制外设接口的逻辑功能。一旦定制成功后,用户自定制的外设接口就可以象SOPCBuilder中其他元件一样被调用。

2 基于NiosⅡ软核处理器的七段数码管动态显示设计

数字系统设计中,用数码管显示数据结果是常用的一种方法。利用Altera的SOPC Builder工具进行Nios Ⅱ系统设计时,并没有提供专门的数码管显示接口元件,但可以使用PIO元件驱动数码管显示,不足之处是占用器件引脚数目过多。本文当中以自定制Avalon Slave外设接口元件的方式,给出了一种基于NiosⅡ软核的七段数码管动态显示设计方案。该设计可以用来驱动1~8个共阴极(或共阳极)数码管的显示,可以根据需要选择小数点显示的位置,每个数码管可以显示0~F之间的十六进制字符。

图3为自定制的数码管动态显示接口元件逻辑结构图,其中定义了2个寄存器display_data_reg和controlreg。display_data_reg是个一个32位二进制的数据寄存器,其数据每4位可以译码得到1个数码管的七段显示所需的字符码,因此,display_data_reg同时最多可以给出8个数码管所需要的显示数据。control_reg是一个8位二进制的控制寄存器,但只定义了0~2位和第4位的含义。0~2位的数据给出了小数点显示的位置,数值范围在“000”~“111”之间,对应着8个数码管最低位到最高位的小数点的位置。第4位是数码管显示的启动停止位,当该数据位为1时,可使自定制接口元件所驱动的数码管正常显示结果;当该数据位为0时,停止显示,所有被驱动的数码管熄灭。

参数n定义了循环加法计数器的模数,同时也决定了驱动数码管显示的个数,其取值范围在1~8之间。clkdisplay是循环加法计数器的时钟输入,他决定了计数器的计数频率,同时也决定了数码管显示的动态扫描频率。参数pos用于决定驱动数码管的类型,其值可设定为0或1。当其值为0时,seg_out字符码输出高电平有效,bit_control数码管位选控制输出低电平有效,此时输出结果用于驱动共阴极数码管显示;当pos值为1时,seg_out字符码输出低电平有效,bit_control数码管位选控制输出高电平有效,此时输出结果用于驱动共阳极数码管显示。

seg_out为自定制元件的字符码输出,用于驱动数码管显示(包括小数点位)。其中,最高一位seg_out[7]用于驱动对应数码管的小数点显示,低7位seg_out[6..0]用于驱动数码管的七段宁符显示。图3中数码管七段译码器根据循环加法计数器的当前状态值,从display_data_reg寄存器中选择4位二进制数据进行译码。例如,当前驱动的数码管的个数为5个(即n=5),循环加法计数器的当前状态值用count表示,则count在0~4范围内变化;若计数器的当前状态值count为2,则选择寄存器display_data_reg[11..8]的4位二进制数据进行译码,若计数器的当前状态值count为3,则选择寄存器display_data_reg[15..12]的4位二进制数据进行译码,即总是选择寄存器display_data_reg[(count+1)×4-1..count×4]的4位二进制数据进行译码。寄存器control_reg的低3位指明了小数点显示的位置,如control_reg[2..0]的值为“000”,则第0位数码管的小数点点亮,若control_reg[2..0]的值为“010”,则第2位数码管的小数点点亮。因为,循环计数器的状态值count反应了数码管动态显示过程中当前数码管显示的位皆,因此,数码管小数点译码器只要比较control_reg[2..0]与count的值,若两者相等,seg_out[7]输山有效值(共阴极输出为高电平,共阳极输出为低电平)即可驱动对应数码管的小数点点亮。

bit_control为自定制元件的位选控制输出,其数据宽度为n位二进制,与要驱动的数码管的个数是一致的。上面已经提到,循环加法计数器的状态值count反应了当前数码管显示的位置。因此,只要根据count的值,使得bit_control对应位输出有效值即可。例如,n取值为5,pos取值为0(即驱动共阴极数码管),若计数器的当前状态值count为2,则bit_control的输出结果为“11011”,若count为4,则bit_control的输出结果为“01111”。

自定制元件的设计采用的是VHDL语言,其实体描述如下面程序所示:

从上面的程序可以看到:n和pos定义成了类属变量,当完成接口元件的定制以后,类属变量在自定制元件的设置窗口中将以用户参数的形式出现,如图4所示,用户可以设置其值。

实体描述当中除定义了自定制元件与外部设备的接口信号clk_display,seg7_out,bit_control信号以外,还定义了 Avalon Slave接口信号,NiosⅡ软核通过这些信号访问自定制元件中定义的寄存器。前面介绍的两个寄存器display_data_reg和control_reg是在程序的结构体说明部分定义的,具体语句如下:

signal display_data_reg:std_logic_vector(31downto 0);
signal control_reg:std_logic_vector(7 downto 0);

结构体中还完成了所定义的两个寄存器的数据写入操作。图3中所示的模n循环加法计数器、七段译码器、小数点译码器和位译码器也在结构体中按上面所介绍的功能设计完成。

3 实验结果

为了验证用于驱动七段数码管动态显示的自定制元件功能,实验中使用SOPC Builder建立了一个最简单的NiosⅡ系统。该NiosⅡ系统添加了3个元件,名称为cpu_0的NiosⅡ软核处理器;名称为seg7的自定制元件,用于完成数码管的显示驱动;名称为onchip_RAM的片上随机存储器,存放调试时的程序代码以及用作程序运行空间。生成的NiosⅡ系统的图形符号如图5所示,clk是系统工作时钟输入;reset_n是系统复位输入,低电平有效;clk_display_to_the_seg7是数码管扫描时钟输入,他决定了数码管动态显示的扫描速度;bit_control_from_the_seg7是位选控制输出,决定了动态过程中哪一个数码进行显示;seg7_out_from_the_seg7是数码管显示数据输出,决定了数码管显示的内容。

新建顶层原理图,调用该NiosⅡ系统,为其添加输入输出引脚,并定义引脚号,选择目标器件型号为EP1C6Q240C8,编译生成配置文件,并通过下载电缆下载到目标器件中。接下来利用NiosⅡIDE建立用户程序。

实验建立NiosⅡ系统时,添加驱动七段数码管显示的自定制元件seg7时的参数n和pos(如图4所示)设置成了两种测试情况,分别用来验证其驱动共阴极和共阳极数码管显示的情况。第一种测试情况将n设置成7,pos设置成0,用来驱动7个共阴极数码管显示。NiosⅡIDE建立的用户测试程序如下:

程序编译通过后,可以在硬件中调试运行程序。为了便于观察测试结果,在ModelSim中运行仿真结果,得到仿真波形如图6所示。仿真分析时系统工作时钟(clk)设置为了50 MHz,数码管动态显示扫描频率(clk_display)设置为1 kHz。图6(a)给出了寄存器内容的写入过程,3个write高电平期间完成了 3次寄存器的写入操作。第一次write高电平将0x00写入address为1的寄存器(即控制寄存器,该定义是在自定制元件的硬件描述语言设计中完成的);第二次write高电平将0xAF05163写入address为0的寄存器(即数据寄存器);第三次write高电平将0x13又写入address为1的控制寄存器。当控制寄存器的内容为0x00时,数码管是停止显示的,因此,在共阴极显示的情况下bit_control的输出全为高电平,直到控制寄存器的内容写入0x13后,bit_control才有输出为低电平的情况(如图6所示)。图6(b)给出了写入寄存器内容以后的工作情况,当数据寄存器写入0xAF05163、控制寄存器写入0x13后,bit_control将从1111110到0111111循环变化,同时将数码管显示所需要的字符码从seg7_out输出。如当bit_control为1111110时,seg7_out输出字符码为0x4F,对应显示“3”;当bit_control为1111101时,seg7_out输出字符码为0x7D,对应显示“6”。由于控制寄存器写入的内容为0x13,即第三位数据管的小数点会亮起,因此当bit_control为1110111时,seg7_out输出字符码为0xED(即二进制的“11101101”),数码管对应显示“5”,而最高一位的“1”会让该数码管的小数点点亮。

以上是第一种测试情况。第二种测试情况是将seg7的参数n设置成5,pos设置成1,用来驱动5个共阳极数码管显示。NiosⅡ IDE建立的用户测试程序如下:

程序编译通过后,同样在Modelsim中运行仿真结果,得到仿真波形如罔7所示。仿真分析时系统工作时钟(clk)设置为了50 MHz,数码管动态显示扫描频率(clkdisplay)设置为1 kHz。

与第一种共阴极显示情况相比,第二种共阳极显示时的寄存器写入过程是大体一样的。不同之处在于共阳极显示时的bit_control和seg7_out和输出极性正好与共阴极显示时的相反。

通过以上的实验,验证了自定制七段数码管动态显示接口元件功能的正确性。

4 结 语

在用Altera公司的SOPC Builder工具完成NiosⅡ软核SOPC系统设计时,可以用SOPC Builder中提供的元件来构建整个系统。但对于有些外部设备,SOPC Builder并没有提供对应的接口元件,此时,就可以使用SOPC Build-er工具的自定制用户元件功能来创建特定功能的接口元件。在本文中,针对数码管的显示,定制了一个七段数码管动态显示接口元件,可以用来驱动1~8个共阴极(或共阳极)数码管的显示,可以根据需要选择小数点显示的位置,每个数码管可以显示0~F之间的十六进制字符,并通过实验验证了其功能的正确性。

关键字:接口  总线  输出  存储 引用地址:基于NiosⅡ软核处理器的七段数码管动态显示

上一篇:SED和FED显示技术的比较分析
下一篇:七段LED显示译码器

推荐阅读最新更新时间:2024-05-13 21:01

赛普拉斯为其领先业界F-RAM和nvSRAM产品组合提供晶圆销售支持
加利福尼亚州圣何塞市,2016年1月21日-赛普拉斯半导体公司(纳斯达克股票交易代码:CY)宣布其领先业界的非易失性随机存取存储器((NVRAM)产品组合新增晶圆产品。赛普拉斯的NVRAM产品组合包括铁电RAM(F-RAM )和非易失性静态RAM(nvSRAM),可在断电时为重要数据提供可靠保护。很多关键任务应用除了需要F-RAM和nvSRAM的独特优势之外,还需要能够实现小巧、独特封装选项的裸片。 赛普拉斯的F-RAM是业内能效最高的NVRAM技术,具有近乎无限的100万亿次读写耐久性。F-RAM 存储单元中的铁电材料可抵御由辐射或磁场导致的数据损坏,因此可为医疗、航天和国防应用提供软错误免疫能力。赛普拉斯的nvSRAM
[嵌入式]
I2C总线多主通信研究与软件设计
    I2C总线(Inter IC BUS)是PHILIPS公司推出的双向两线串行通信标准。由于它具有接口少、通信效率高等优点,现已得到广泛的应用 。它除了可以进行简单的单主节点通信外,还可以应用在多主节点的通信系统中。在多主节点通信系统中,如果两个或者更多的主节点同时启动数据传输,总线具有冲突检测和仲裁功能,保证通信正常进行并防止数据破坏。现在许多微控制器(MCU)都具有I2C总线接口,能方便地进行I2C总线设计。对于没有I2C总线接口的MCU,可以采用两条I/O接口线进行模拟 。目前,一些介绍模拟I2C的资料主要讲的是在单主节点系统中进行的通信,这使得模拟I2C总线的应用具有一定的局限性。本文根据总线仲裁的思想,提出一种多主
[嵌入式]
具有自动收发转换的RS-485接口电路及其测试电路
    图l所示的虚线框中为接口电路,通过对真值表进行分析,其发送和接收过程为:     当发送端DI=O时,DE/RE=1发送O电平,接收端RO=O;当发送端DI=1时,DE/RE=0,VA=VB=2.5V,接收端由于上拉电阻的作用RO=1。     在此接口电路的TXo端加入1kHz的TTL方波对电路进行测试。未加入120Ω端电阻时,接口芯片的485-A和485-B脚都有约50μs的电压变化过程,如图2所示。接收端Ro波形的上升沿有明显的延迟约30~40μs(和数据发送端DI比较),造成很大的传输误差;加入120Ω端电阻时,延迟明显缩小,约3μs。     此电路在发送高电平时,发送器处于高阻状态,总线上所有接口
[嵌入式]
RS485总线典型电路介绍
一、RS485总线介绍: RS485总线是一种常见的串行总线标准,采用平衡发送与差分接收的方式,因此具有抑制共模干扰的能力。在一些要求通信距离为几十米到上千米的时候,RS485总线是一种应用最为广泛的总线。而且在多节点的工作系统中也有着广泛的应用。 二、RS485总线典型电路介绍: RS485电路总体上可以分为隔离型与非隔离型。隔离型比非隔离型在抗干扰、系统稳定性等方面都有更出色的表现,但有一些场合也可以用非隔离型。 我们就先讲一下非隔离型的典型电路,非隔离型的电路非常简单,只需一个RS485芯片直接与MCU的串行通讯口和一个I/O控制口连接就可以。如图1所示: 图1、典型485通信电路图(非隔离型) 当然,
[嵌入式]
三端稳压器输出电压公式及应用
固定输出集成稳压器如78××系列,只需外接两只 电阻 ,就能方便地提升输出电压V0(见下图)。 其输出电压表达式如下: V0=VR1+VR2   =VR1+I0R2   =V××+(V××/R1+Id)R2   =V××(1+R2/R1)+IdR2 其中V××代表IC的输出电压。这是一个完整的公式,其结果是精确的。V0的表达式与固定输出稳压器接地端的静态工作电流Id有关。当Id变化时,会引起输出电压和负载电流的变化,但由于Id值较小,一般仅为几个毫安,所以对稳压器的精度影响很小。当R1、R2阻值取得较小时,可以忽略IdR2这一项。此时V0的表达式可简化成: V0≈V××(1+R2/R1) 欲使实践所得结果与计算值相符
[电源管理]
PCI总线的热插拔技术及实现
    摘要: 具有热插拔PCI槽现已成为许多需要长时间不间断工作和能够在线维修的计算机系统的必备功能。文中介绍了热插拔的基本技术问题,给出了利用Linear Technology公司的热插拔电源控制芯片LTC1421来实现PCI总线热插拔的具体电路以及工作过程。     关键词: PCI总线 热插拔 LTC1421 PCI总线已经广泛使用在高性能个人计算机和单板计算机中,由于具有32/64位的数据宽度和最高达133Mbps的带宽,因而PCI可满足绝大多数I/O设置的要求。但是原始的PCI规范并没有热插拔功能,这样当外设插入或拔出时必须关闭系统电源。 在PCI总线应用到服务器、生命监护系统、工业
[应用]
处理器架构 (六.1) armv4v5v6 架构参考手册(2.1) 存储金字塔及速度
最新存储金字塔架构 存储金字塔v1及速度 understanding-arm-documentation Instruction cycle timings 在 TRM 中 有表述 Size of caches/TLBs 在 TRM 中 有表述 内存金字塔是按照 Ln 划分的 一开始没有 cache L0 寄存器 访问速度 xns // 比如 ADD{ cond }{S} Rd , Rn , shifter_operand 该指令周期为1个时钟周期,如果主频1Ghz,可以1ns就可以搞定. L1 Main memory 访问速度 100ns 对于Cortex M0 M3 M4的我知道可以在其《技术参考
[单片机]
处理器架构 (六.1) armv4v5v6 架构参考手册(2.1) <font color='red'>存储</font>金字塔及速度
安立、泰克科技和GRL联手举办高速接口测试论坛2021年会
与产业引领者携手共进,三家继续联手举办高速接口测试论坛2021年会 站在行业高点,一起回顾展望,死磕前沿热点 中国北京2022年1月24日 – 由安立, 泰克科技, GRL联合举办的2021高速接口测试论坛年会,于2022年1月6号在上海浦东喜来登大酒店顺利召开。 高速接口测试论坛是由安立/ 泰克科技/ GRL 发起,聚焦PCIe、DDR、USB、DP、HDMI、CXL等高速接口的进展及测试,旨在分享高速接口测试的经验以及提升高速接口的信号完整性能力,为高速接口标准提出建设性的建议。 时值2021年年终,对于元宇宙的畅想热浪翻滚,全球的数据消费继续保持高速增长态势,高速接口标准也继续快速向前演化。同时随着自动驾驶
[测试测量]
安立、泰克科技和GRL联手举办高速<font color='red'>接口</font>测试论坛2021年会
小广播
最新应用文章

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 安防电子 医疗电子 工业控制

词云: 1 2 3 4 5 6 7 8 9 10

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved