SoC(System On a Chip)又称为片上系统,是指将微处理器、模拟IP核、数字IP核和存储器(或片外存储器接口)集成在单一芯片上。SoC产品不断朝着体积小、功能强的方向发展,芯片内部整合越来越多的功能。ARM架构作为嵌入式系统流行的应用,其应用的扩展面临软件扩充的问题,而X86平台上却有很多软件资源。若将已有的X86软件移植到ARM平台,则可以在一定程度上解决软件扩充的问题。 本论文针对X86指令在ARM中兼容的应用,以智能手机的应用为例,提出了基于ARM嵌入式平台,使用X86指令到ARM指令的二进制翻译模块,达到对X86指令的兼容。主要研究ARM公司的片上总线系统——AMBA AHB和AMBA APB片上总线标准。对Multi-layer总线结构进行研究,分析了Multi-layer AHB系统中使用的Bus Matrix模块的结构,从Bus Matrix模块的内部矩阵结构和系统架构两方面针对系统的特点作出优化。 最后介绍了论文采用的事物级模型与Verilog HDL协同仿真的方法和系统的控制过程,通过仿真结果的比较,验证了利用二进制翻译模块实现X86指令执行的可行性和优化后的架构较适合于X86翻译系统的应用。
上传时间: 2013-06-28
上传用户:钓鳌牧马
本文以电子不停车收费系统课题为背景,设计并实现了基于FPGA的π/4-DOPSK全数字中频发射机和接收机。π/4-DQPSK广泛应用于移动通信和卫星通信中,具有频带利用率高、频谱特性好、抗衰落性能强的特点。 近年来现场可编程门阵列(FPGA)器件在芯片逻辑规模和处理速度等方面性能的迅速提高,用硬件编程实现无线功能的软件无线电技术在理论和实用化上都趋于成熟和完善,因此可以把数字调制,数字上/下变频,数字解调在同一块FPGA上实现,即实现了中频发射机和接收机一体化的片上可编程系统(SOPC,System On Programmabie Chip)。 本文首先根据指标要求对数字收发机方案进行设计,确定了适合不停车收费系统的全数字发射机和接收机的结构,接着根据π/4-DQPSK发射机和接收机的理论,设计并实现了基于FPGA的成形滤波器SRRC、半带滤波器HB和定时算法并给出性能分析,最后给出硬件测试平台上结果和测试结果分析。
上传时间: 2013-07-18
上传用户:saharawalker
视频目标识别与跟踪技术是当今世界重要的研究课题,它涉及图像处理、自动控制、计算机应用等学科,该文主要论述该项目的具体实现及相关理论分析,重点在于该系统的硬件模块实现及分析.该系统的硬件模块是典型的高速数字电路,这也是当今世界电路设计的一大热点.同时,该系统的硬件模块不同于传统的模拟、数字电路.严格的说它是基于可编程芯片的系统(System On Programmable Chip).它与传统电路的最大不同在于,硬件模块本身不具备任何功能,但该硬件模块可以与相应的软件结合(此处,我们将FPGA中的可编程指令也广义的归入软件范畴),实现相应的功能.换言之,该硬件模块通过换用其他软件,可以实现其他功能.所以从这个意义上讲,我们也可以将其称为基于可编程芯片的通用平台系统(General System On Programmable Chip).此外,该文还对该系统进行了尝试性的层状结构描述,这种描述同样适用于其它IT目的或电子系统.
上传时间: 2013-04-24
上传用户:yumiaoxia
随着信息技术的发展,系统级芯片SoC(System on a Chip)成为集成电路发展的主流。SoC技术以其成本低、功耗小、集成度高的优势正广泛地应用于嵌入式系统中。通过对8位增强型CPU内核的研究及其在FPGA(Field Programmable Gate Arrav)上的实现,对SoC设计作了初步研究。 在对Intel MCS-8051的汇编指令集进行了深入地分析的基础上,按照至顶向下的模块化的高层次设计流程,对8位CPU进行了顶层功能和结构的定义与划分,并逐步细化了各个层次的模块设计,建立了具有CPU及定时器,中断,串行等外部接口的模型。 利用5种寻址方式完成了8位CPU的数据通路的设计规划。利用有限状态机及微程序的思想完成了控制通路的各个层次模块的设计规划。利用组合电路与时序电路相结合的思想完成了定时器,中断以及串行接口的规划。采用边沿触发使得一个机器周期对应一个时钟周期,执行效率提高。使用硬件描述语言实现了各个模块的设计。借助EDA工具ISE集成开发环境完成了各个模块的编程、调试和面向FPGA的布局布线;在Synplify pro综合工具中完成了综合;使用Modelsim SE仿真工具对其进行了完整的功能仿真和时序仿真。 设计了一个通用的扩展接口控制器对原有的8位处理器进行扩展,加入高速DI,DO以及SPI接口,增强了8位处理器的功能,可以用于现有单片机进行升级和扩展。 本设计的CPU全面兼容MCS-51汇编指令集全部的111条指令,在时钟频率和指令的执行效率指标上均优于传统的MCS-51内核。本设计以硬件描述语言代码形式存在可与任何综合库、工艺库以及FPGA结合开发出用户需要的固核和硬核,可读性好,易于扩展使用,易于升级,比较有实用价值。本设计通过FPGA验证。
上传时间: 2013-04-24
上传用户:jlyaccounts
随着 EDA 技术及微电子技术的飞速发展,现场可编程门阵列(Field Programmable Gate Array,简称 FPGA)的性能有了大幅度的提高,FPGA的设计水平也达到了一个新的高度。基于FPGA的嵌入式系统设计为现代电子产品设计带来了更大的灵活性,以Nios Ⅱ软核处理器为核心的SOPC(System on Programmable Chip)系统便是把嵌入式系统应用在FPGA上的典型例子,本文设计的指纹识别模块就是基于FPGA的Nios Ⅱ处理器为核心的SOPC设计。通过IP核技术和灵活的软硬件编程,实现Nios Ⅱ对FPGA外围器件的控制,并对指纹处理算法进行了改进,研究了指纹识别算法到Nios Ⅱ系统的移植。 本文首先阐述了指纹识别模块的SOPC设计方案,然后是对模块的详细设计。在硬件方面,完成了指纹识别模块的 FPGA 硬件设计,包括 FPGA 内部的Nios Ⅱ系统硬件设计和 FPGA 外围电路设计。前者利用 SOPC Builder将Nios Ⅱ处理器、指纹读取接口 UART、键盘与LCD显示接口、FLASH接口、SDRAM控制器构建成NiosⅡ硬件系统,后者是电源和时钟电路、SDRAM存储器电路、FLASH存储器电路、LCD显示电路、指纹传感器电路、FPGA 配置电路这些纯实物硬件设计,给出了设计方法和电路连接图。 在软件方面,包括下面两个内容: 完成 FPGA 外围器件程序设计,实现对外围器件的操作。 深入的研究了指纹识别算法。对指纹图像识别算法中的指纹图像滤波和匹配算法进行了分析,提出了指纹图像增强改进算法和匹配改进算法,通过试验,改进后的指纹图像滤波算法取得了较好的指纹图像增强效果。改进后的匹配算法速度较快,误识率较低。最后研究了指纹识别算法如何在FPGA中的Nios Ⅱ系统的实现。
上传时间: 2013-06-12
上传用户:yx007699
基于单片机的频率计的实现和protuse仿真-Frequency meter based on single chip implementation and protuse simulation
上传时间: 2013-06-04
上传用户:杜莹12345
特点: 精确度0.1%满刻度 可作各式數學演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A|/ 16 BIT类比输出功能 输入与输出绝缘耐压2仟伏特/1分钟(input/output/power) 宽范围交直流兩用電源設計 尺寸小,穩定性高
上传时间: 2014-12-23
上传用户:ydd3625
特点(FEATURES) 精确度0.1%满刻度 (Accuracy 0.1%F.S.) 可作各式数学演算式功能如:A+B/A-B/AxB/A/B/A&B(Hi or Lo)/|A| (Math functioA+B/A-B/AxB/A/B/A&B(Hi&Lo)/|A|/etc.....) 16 BIT 类比输出功能(16 bit DAC isolating analog output function) 输入/输出1/输出2绝缘耐压2仟伏特/1分钟(Dielectric strength 2KVac/1min. (input/output1/output2/power)) 宽范围交直流两用电源设计(Wide input range for auxiliary power) 尺寸小,稳定性高(Dimension small and High stability)
上传时间: 2013-11-24
上传用户:541657925
/*--------- 8051内核特殊功能寄存器 -------------*/ sfr ACC = 0xE0; //累加器 sfr B = 0xF0; //B 寄存器 sfr PSW = 0xD0; //程序状态字寄存器 sbit CY = PSW^7; //进位标志位 sbit AC = PSW^6; //辅助进位标志位 sbit F0 = PSW^5; //用户标志位0 sbit RS1 = PSW^4; //工作寄存器组选择控制位 sbit RS0 = PSW^3; //工作寄存器组选择控制位 sbit OV = PSW^2; //溢出标志位 sbit F1 = PSW^1; //用户标志位1 sbit P = PSW^0; //奇偶标志位 sfr SP = 0x81; //堆栈指针寄存器 sfr DPL = 0x82; //数据指针0低字节 sfr DPH = 0x83; //数据指针0高字节 /*------------ 系统管理特殊功能寄存器 -------------*/ sfr PCON = 0x87; //电源控制寄存器 sfr AUXR = 0x8E; //辅助寄存器 sfr AUXR1 = 0xA2; //辅助寄存器1 sfr WAKE_CLKO = 0x8F; //时钟输出和唤醒控制寄存器 sfr CLK_DIV = 0x97; //时钟分频控制寄存器 sfr BUS_SPEED = 0xA1; //总线速度控制寄存器 /*----------- 中断控制特殊功能寄存器 --------------*/ sfr IE = 0xA8; //中断允许寄存器 sbit EA = IE^7; //总中断允许位 sbit ELVD = IE^6; //低电压检测中断控制位 8051
上传时间: 2013-10-30
上传用户:yxgi5
TLC2543是TI公司的12位串行模数转换器,使用开关电容逐次逼近技术完成A/D转换过程。由于是串行输入结构,能够节省51系列单片机I/O资源;且价格适中,分辨率较高,因此在仪器仪表中有较为广泛的应用。 TLC2543的特点 (1)12位分辩率A/D转换器; (2)在工作温度范围内10μs转换时间; (3)11个模拟输入通道; (4)3路内置自测试方式; (5)采样率为66kbps; (6)线性误差±1LSBmax; (7)有转换结束输出EOC; (8)具有单、双极性输出; (9)可编程的MSB或LSB前导; (10)可编程输出数据长度。 TLC2543的引脚排列及说明 TLC2543有两种封装形式:DB、DW或N封装以及FN封装,这两种封装的引脚排列如图1,引脚说明见表1 TLC2543电路图和程序欣赏 #include<reg52.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int sbit clock=P1^0; sbit d_in=P1^1; sbit d_out=P1^2; sbit _cs=P1^3; uchar a1,b1,c1,d1; float sum,sum1; double sum_final1; double sum_final; uchar duan[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uchar wei[]={0xf7,0xfb,0xfd,0xfe}; void delay(unsigned char b) //50us { unsigned char a; for(;b>0;b--) for(a=22;a>0;a--); } void display(uchar a,uchar b,uchar c,uchar d) { P0=duan[a]|0x80; P2=wei[0]; delay(5); P2=0xff; P0=duan[b]; P2=wei[1]; delay(5); P2=0xff; P0=duan[c]; P2=wei[2]; delay(5); P2=0xff; P0=duan[d]; P2=wei[3]; delay(5); P2=0xff; } uint read(uchar port) { uchar i,al=0,ah=0; unsigned long ad; clock=0; _cs=0; port<<=4; for(i=0;i<4;i++) { d_in=port&0x80; clock=1; clock=0; port<<=1; } d_in=0; for(i=0;i<8;i++) { clock=1; clock=0; } _cs=1; delay(5); _cs=0; for(i=0;i<4;i++) { clock=1; ah<<=1; if(d_out)ah|=0x01; clock=0; } for(i=0;i<8;i++) { clock=1; al<<=1; if(d_out) al|=0x01; clock=0; } _cs=1; ad=(uint)ah; ad<<=8; ad|=al; return(ad); } void main() { uchar j; sum=0;sum1=0; sum_final=0; sum_final1=0; while(1) { for(j=0;j<128;j++) { sum1+=read(1); display(a1,b1,c1,d1); } sum=sum1/128; sum1=0; sum_final1=(sum/4095)*5; sum_final=sum_final1*1000; a1=(int)sum_final/1000; b1=(int)sum_final%1000/100; c1=(int)sum_final%1000%100/10; d1=(int)sum_final%10; display(a1,b1,c1,d1); } }
上传时间: 2013-11-19
上传用户:shen1230