FPGA资料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
片上系统:片上系统soc又称为集成系统,简称IS。一般将一个完整产品的各功能集成在一个芯片上或一个芯片组上。
可编程sopc:SOPC是一种通用器件,是基于FPGA的可重构SOC。
Cyclone:特点:1.Nios嵌入式处理器支持2.中等容量的片内存储器3.从低到中等速度的I/O和存储器4.广泛的IP核支持
CycloneII:~:用于那些考虑成本多与性能或其他功能的设计。特点:1.NiosII嵌入式处理器支持2.嵌入式18x18数字信号处理(DSP)乘法器3.中等容量的片内存储器4.中等速度的I/O和存储器接口5.广泛的IP核支持
QuartusII设计流程:设计输入——设计综合——布局布线——验证、仿真——嵌入式软件
Cyclone架构:垂直结构的逻辑单元(IE)、嵌入式存储块和锁相环(PLL)、周围环绕着的I/O单元(IOE)支持的接口及协议:PCI:标准总线型接口、SDRAM及FCRAM接口、10/100及千兆以太网、串行总线接口、通信协议
锁相环的目的:给用户提供高性能的时钟管理能力。
工作原理:压控振荡器给出一个信号,一部分作为输出另一部分通过分频与外部输入的分频信号作相位比较,如果相位差发生了变化,则相位比较器输出端电压发生变化去控制压控振荡器(VCO)直到相位差恢复,达到锁频的目的。k=0,1,2
I/O特性:支持差分I/O口(LVTTL、LVCOMS)和普通I/O口(LVDS、RSDS)
普通I/O口特点:驱动能力强、电流小、抗干扰性能差
差分I/O口特点:抗干扰性能强、驱动能力差,电流大、电磁干扰低、电源功耗低
Cyclone与CycloneII区别:CycloneII器件提供了最多150个18X18位乘法器,可以实现通用数字信号处理(DSP)功能
引脚锁定步骤:1.打开引脚锁定界面2.双击引脚锁定区Location 3.在列出的引脚号中进行选择4.所有引脚锁定好后,再次进行编译
波形仿真步骤:1.新建波形仿真步骤2.设置仿真器3.插入仿真节点4.编辑输入波形文件5.运行仿真器SOPC Builde是Altera公司推出的一种可加快在PLD内实现嵌入式处理器相关设计的工具,是一个系统级开发工具
~设计流程阶段:配置和生成。配置:部分配置和系统配置
模块池:1.绿圆点:用户可以添加到用户系统中的元件是完全许可的。2.黄圆点:元件在系统中的应用受到某种形式的限制,主要限制有使用时间有所限制和功能有所减少。3.白圆点:元件目前还没有安装到用户的系统上,用户可以从网上下载这些元件。
NiosII软硬件开发流程:硬件:1.用SOPC Buider系统软件选取合适的CPU、存储器以及外围器件,并定制它们东东功能。2.利用QuartusII选取可编程器件系列,并进行布局布线,之后对I/O分配管脚,进行硬件编译或时序约束的设置,生成配置文件。3.将配置文件下载到开发板上,当校验完硬件设计后,再次将配置文件下载到非易失性的存储器中。
软件:1.编写独立于器件的C/C++软件。2.IDE根据SOPC Builder对系统硬件配置自动生成一个定制HAL系统库,这个库为程序和底层硬件与通信提供接口驱动程序。3.使用NiosII IDE对软件工程进行编译、调试。
4.将硬件设计下载到开发板上后就将软件下载到开发板上并在硬件上运行。
System.h系统描述的信息:1.外围设备的硬件配置2.基地址3.中断优先级4.外围器件的符号名称。
数据宽度和HAL类型:alt_types.h定义了HAL类型。alt_8/16/32:有符号8/16/32位整数
Alt_u8/16/32:无符号8/16/32位整数
C语言标准库函数:fopen()打开一个文件,fclose()关闭一个文件fread()从一个文件流中读取数据。
HAL库UNIX文件操作函数:close()关闭文件fstat()由文件描述词取得文件状态ioctl()设备驱动程序中对设备的I/O通道进行管理isatty()检查设备类型lseek()移动文件读/写指针open()打开一个文件resd()从打开文件中读数据stat()检查文件属性writel()写到一文件中
1.从文件子系统中读取文件
#include
#include
#include
#define BUF_SIZE(10)
int main(void)
{
FILE *fp;
char buffer[BUF_SIZE];
fp = fopen(“/mount/rozipfs/test”;”r”);
if( fp == NULL)
{
printf(“Cannot open file.\n”);
exit(1);
}
fread(buffer,BUF_SIZE,1,fp);
fclose(fp);
return(0);
}
2.发送“Hello world”给任何一个和stdout相连的设备#include
int main()
{
prinf(“Hello world”);
return 0;
}
3.向UART写入字符“hello world”
#include
#include
int main(void)
{
cha r* msg = “hello world”;
FILE* fp;
fp = fopen(”/dev/uart1”,”w”);
if(fp)
{
fprintf(fp,”%s”,msg);
fclose(fp);
}
return 0;
}
4.按键中断:
#include
#include "system.h"