您的当前位置:首页正文

SOPC论文

2021-06-17 来源:一二三四网


基于SOPC的万年历研究

摘 要

本文介绍了一种基于片上可编程系统(SOPC)设计万年历的方法。本次设计从系统硬件出发,由CPU,总线,RAM,外接设备等构成SOPC Builder的硬件系统,通过Nios II DE2开发的嵌入式软件编写并嵌入SOPC Builder的硬件中实现万年历的整体开发。通过应用SoPC Builder开发工具,设计者可以摆脱传统的、易于出错的软硬件设计细节,从而达到加快项目开发、缩短开发周期、节约开发成本的目的并具有高集成度、设计灵活和可移植性较好。 关键词:万年历;SOPC;SOPC;Builder;Nios II;DE2

Abstract

This paper introduces a method of calendar which designde on programmable chip (SOPC).The design of the system hardware from starting (CPU, RAM, bus, external equipment) constitute the SOPC Builder hardware systemand then through the Nios II IDE development of embedded software and hardware of the embedded SOPC Builder realize the integral development of the calendar. Through the application SOPC Builder development tools designers can get rid of details of traditional and easy to go wrong the design of the software and hardware so as to speed up the project development to shorten the development cycle save the purpose of development pays.

Keywords:Calendar;SOPC;SOPC;Builder;Nios II;DE2

1 引言

SOPC代表了当今电子设计的发展方向,它可以将处理器、存储器、I/O接口硬件协处理器和普通的用户逻辑等系统设计需要的功能模块都集成到一个 芯片里,构建一个可编程的片上系统它具有软硬件可重构剪裁和编程等功能,由于同 时涉及底层的硬件系统设计和相应的软件设计,在系统优化方面有了前所未有的自由度。

现在的电子万年历多数采用基于单片机的控制技术,可移植性较差,集成度较低,本文利用NIOS II软核在DE2-115开发板中既能实现用户定制的处理器,又能对液晶显示模块和数码管显示进行编程控制。本文在软、硬件开发过程中,通过利用SOPC技术,缩短设计开发周期,节约开发成本,优化性能和资源。

本文以万年历设计为例,使读者初步了解SOPC的开发过程。

2 系统硬件设计

在系统的硬件设计中,FPGA内部各模块设计是本系统硬件设计的核心技术。FPGA内部各模块是利用Altera公司的Quartus II开发软件中的SOPC builder工具对CPU进行定制,包括CPU的数据和指令Cache的大小、CPU寄存器数量(NIOS II最多可以有512个寄存器)等。用户可以增加新的外设,新的指令,分配外设的地址等进行定义,完成SOPC开发的集成过程。将这些设计在Quartus II中编译生成sof格式文件后,下载到FPGA芯片中就形成了SOPC的嵌入式系统硬件平台。

对万年历设计来说,需要将本设计所需要的外设添加到NIOS软核中。SOPC Builder是在Quartus II里的SOPC Builder进行的,先建立工程,在SOPC Builder里添加硬件,包括CPU ,jtag_uart ,RAM,LCD,PIO,按键,LED,以及LCD_ON。硬件会自动建立一个顶层模块,通过建一个原理图来对对应的硬件进行输入输出的添加,再锁定引脚,编译工程,硬件下载。如图1所示打开SOPC Builder生成相应的硬件。

图1 设计完成的界面

然后,用SOPC Builder将定制转化成为具体的元件,即用户定制的NIOS II处理器模块,如图2所示。除此之外,SOPC Builder还根据定制的结果,自动生成针对特定硬件环境的C语言和汇编语言的头文件以及函数库,这在软件设计中会极大的减少软件开发人员的工作量。

图2 NIOS II软核处理器模块

3 系统软件设计

本系统的软件是在Altera公司提供的软件集成开发工具NIOS Ⅱ IDE中,以C语言形式,在硬件抽象层(HAL)函数支持下设计的它可完成整个软件工程的编辑编译调试和下载等过程,极大地提高了软件的开发效率。

系统的软件设计主要包括两个部分:头文件和C++文件。 (1)头文件

打开Nios II IDE2,建立工程,选择count_binary模块,添加一个LCD.h的顶层文件。

LCD.h的顶层文件为: #ifndef _LCD_H_

#define _LCD_H_ //LCD Module 16*2

#define lcd_write_cmd(base,data) IOWR(base, 0, data) #define lcd_read_cmd(base) IORD(base, 1) #define lcd_write_data(base,data) IOWR(base, 2, data) #define lcd_read_data(base) IORD(base, 3) //========================== void LCD_Init();

void LCD_Show_Text(char*Text); void LCD_Line2(); void LCD_Test();

//========================= #endif //_LCD_H_

(2)C++文件

用Nios II DE2 开发板的LCD显示电子钟的日期和时间。LCD分两行显示,第1行显示年、月、日;第2行显示时、分、秒。用输入BUTTON[0]来控制LCD行的修改,同时让Nios II DE2开发板上的绿色发光二极管亮灭来表示这个选择。当BUTTON[0]按一下后,LEDG3亮,可以修改年、月和日的数字;再按一下BUTTON[0]后,LEDG3灭,可以修改时、分和秒的数字。

另外用输入按钮BUTTON[3]来控制日期和时间的修改,当处于日期修改方式时,每次按动一次BUTTON[3],依次更换“年”、“月”和“日”的修改。当处于时间修改方式时,每次按动一次BUTTON[3],依次更换“时”、“分”和“秒”的修改。修改对象被选中后,按动BUTTON[2]输入按钮可以增加显示的数字;按动BUTTON[1]输入按钮可以减少显示的数字。主函数如下:

int main()

{

while(1){

if(ms%10==0){

if(ms/10==1){//显示

if(shift==1){ //date

if(con==0)//year

printf(\" -%2d-%d\\n\",month,day); if(con==1)//month

printf(\"%d- -%d\\n\",year,day); if(con==2)//day

printf(\"%d-%2d- \\n\",year,month);

printf(\"%d:%d:%2d\\n\",hour,minute,second); //time }

if(shift==2){

printf(\"%d-%2d-%d\\n\",year,month,day); if(con==0)//hour

printf(\" :%d:%2d\\n\",minute,second); if(con==1)//minute

printf(\"%d: :%2d\\n\",hour,second); if(con==2)//second

printf(\"%d:%d: \\n\",hour,minute); }

}

else {

printf(\"%d-%2d-%d\\n\",year,month,day); printf(\"%d:%d:%2d\\n\",hour,minute,second); } }

usleep(50000); ms++;

if(ms==20){ ms=0; second++; }

if(second==60){ minute++; second=0;

if(minute==60){ minute=0; hour++;

if(hour==24){ hour=0; day++;

if(day==31){ day=1; month++;

if(month==12){

month=1; year++; } } } } }

//=============检测按键 KEY=push_button(); switch(KEY){

case 1: shift++;if(shift>=3)shift=0; break; case 2: step=1;break; case 3: step=-1;break;

case 4: con++;if(con>=3)con=0; break; default :break; } modify();

//=============检测按键 }

return 0; }

以上程序经过在DE2-115开发板上进行了软硬件调试,实现了对液晶模块的万年历和作者信息等汉字字符显示,并在LCD上实现了万年历的功能,并能够进行日期和时间的调整。

4 结论

本文作者创新点是采用NIOS Ⅱ集成开发环境提供的快捷开发手段,在EP4CE115F29C7N芯片上创建了一个用户定制CPU和外设的片上系统,同时完成对液晶显示器和LCD的编程控制整个系统充分体现了SOPC设计方法的灵活性,设计时只定制系统需要的外设器件接口,避免过多的外围电路和器件造成体积功耗的增多和可靠性的下降由于采用软核结构,方便系统的升级和扩展,而不必硬件改版,节约了成本,加快开发进度,缩短了产品的开发周期

综上所述,万年历的设计思想新颖独特,有很多创新之处,具有良好的推广前景和广阔的应用领域.

因篇幅问题不能全部显示,请点此查看更多更全内容