32位单片机

2024-10-13

32位单片机(精选7篇)

32位单片机 篇1

LPC2141/2142/2144/2146/2148是基于一个支持实时仿真和嵌入式跟踪的32/16位ARM7 TDMI-S CPU的微控制器, 并带有32kB和512kB嵌入的高速Flash存储器。128位宽度的存储器接口和独特的加速结构使32位代码能够在最大时钟速率下运行。对代码规模有严格控制的应用可使用16位Thumb模式将代码规模降低超过30%, 而性能的损失却很小。

较小的封装和很低的功耗使LPC2141/2142/2144/2146/2148特别适用于访问控制和POS机等小型应用中;由于内置了宽范围的串行通信接口 (从USB 2.0全速器件、多个UART、SPI、SSP到I2C总线) 和8k B~40kB的片内SRAM, 它们也非常适合于通信网关、协议转换器、软件modem、语音识别、低端成像, 为这些应用提供大规模的缓冲区和强大的处理功能。多个32位定时器、1个或2个10位ADC、10位DAC、PWM通道、45个高速GPIO线以及多达9个边沿或电平触发的外部中断管脚, 使它们特别适用于工业控制和医疗系统。

32位单片机 篇2

近年来, 随着硬件设备的升级, X64架构的服务器已成为主流, 由于具有更快计算速度和更大的寻址空间, 在通常情况下可以具有更高的性能表现。在Windows Server领域, 2008r2版本之后也仅支持x64架构的服务器, 所以很多企业的系统面临是否将旧版应用程序升级到x64架构下的抉择。Microsoft SQL Server 2005及以后版本也提供了对x64架构的支持, 其ETL组件SSIS (Microsoft SQL Server Integration Services, 缩写为SSIS) 在进行大数据的聚合操作时, 性能会有较大提升, 但是对于原本内存消耗较少的SSIS应用程序, 是否进行x64架构的迁移, 则需要充分考虑迁移成本和性能提升之间的关系。主要从X64服务器优势, SSIS基本原理入手, 通过对比实验, 验证从Oracle 11g到SQL Server 2008的ETL程序在x86和x64两种架构下性能变化, 从而为企业级应用迁移提供数据参考。

2 x64架构服务器

X64架构服务器最大优势是可以直接寻址4G以上的内存。从理论上说, 一个64位处理器可以对多达16 EB (艾字节) 的物理内存寻址。但在Windows Server中, 物理内存的使用上限为128GB, 虚拟内存使用的上限是16TB。另一方面, x64处理的64位指令集 (如AMD64) , 不仅增加了处理器能寻址的内存, 而且通过解决基于栈的调用约定和增加通用寄存器个数提升了性能[1]。

Windows x64的WOW64子系統 (Windows On Windows64, WOW64.DLL) , 用于执行32位的应用程序, 这为32位的程序可以在64位机器上运行提供了一种方式。但是由于一些特殊情况, 例如一些底层驱动, 32位脚本编译等问题, 造成原有基于x86开发的程序在x64服务器中无法直接运行, 所以要升级到x64的服务器中, 要么修改程序, 要么只能运行于32位的进程中, 从而放弃x64架构带来的红利。所以在企业级的应用中, 当服务器升级至x64架构后, 需要充分考虑程序升级成本和可能带来效益的比对, 例如企业的大型应用程序中内存消耗较少的模块是否有必要升级到x64, 架构下, 性能指标成为一个重要参考。如果原有程序在x64架构服务器上, 以32位的方式运行, 仍可以保持同x64架构下基本相同的效率, 那么完全可以不对程序进行升级, 从而节省大量人力和物力。

3 SSIS管理方式

SQL Server自2005提供了Integration Services服务, 取代了以前的DTS (Data Transformation Services) , 用于合并来自于异类数据源的数据, 填充数据仓库和数据集市等[3]。

鉴于SSIS良好的可视化编程界面, 强大的ETL功能, 很多公司在进行数据整合处理, 装载数据仓库选择了此技术。在企业级应用中, 必然会面对SSIS定时启动的问题, 常见的启动方式包括:使用SSIS对象模型 (Object Model) , 利用DTExec.exe进程, 使用SQL Agent, 或者创建一个可以运行SSIS包的应用程序。在企业级应用中, 由于有大量不同的业务, 可能需要按不同频率来组织运行成百上千SSIS包, 为方便管理, 提高性能 (在不同的进程运行不同SSIS包) , 所以很多公司会选择自己开发一个应用程序来管理SSIS包。

4 迁移升级面临的问题

基于x86架构开发的SSIS程序, 直接迁移到x64架构下, 会遇到多种不兼容问题, 比较常见的包括:2005版本的脚本组件的预编译选项默认为false, 如果在初始开发过程中未进行修改, 那么这些SSIS应用程序无法在x64架构的服务器中的64位进程中通过编译;连接Oracle的MSDAORA驱动仅提供了32位版本, 如果在64位环境中, 必须改为Ora OLEDB驱动。针对这些不兼容问题, 一般有两种方案可以选择, 一种是修改应用程序, 另一种是在x64架构的服务器中, 仍以32位模式运行。前者的优势是可以带来更好的性能, 劣势是可能需要修改大量代码, 而后者恰好相反。在企业级应用中, 选择哪种方案需要充分衡量代码修改的成本和性能提升带来的效益。根据2, 3部分描述, x64架构服务器的最大优势是直接寻址4GB以上内存, 如果SSIS包内存消耗较少情况下, 在x86和x64的两种运行模式下运行的性能变化不大, 企业完全可以选择第二种方案, 从而节省大量代码修改的成本。

5 验证环境

针对内存消耗不超过4GB的简单SSIS包在32位和64位两种进程中的运行性能进行了对比试验。

验证环境为:

源数据库服务器配置:16颗cpu 32g内存, HP-UX B11.31, Oracle 11g。

目标数据库服务器配置:2.4G双核Xeon处理器*2, 8g内存, Windows Server 2008 R2 Enterprise SQL Server 2008服务器。

ETL服务器配置:2.4G双核Xeon处理器*2, 8g内存, Windows Server 2008 R2 Enterprise SQL Server 2008。

为保证验证结果准确性, 分别选择了含有十万, 百万和千万3个不同数量级数据的表, 在32位和64位进程中利用SSIS包进行数据抽取和装载, 结果如表1所示。

根据实验结果可以看出, 本身内存消耗较少的SSIS应用程序, 在32位和64位的进程中性能基本不变。

6 结语

对于内存要求不高的SSIS应用程序, 在迁移到x64架构的服务器下, 无法发挥其性能优势。但对于本身在x86服务器中内存已经不够使用的SSIS应用程序, 迁移到x64架构服务器下, 性能可以获得一定提升, 但升级程序本身带来的成本同效率提升带来的效益之间的平衡关系, 仍需企业根据实际情况进一步验证分析。

摘要:通过分析实验, 对利用SSIS开发的ETL程序, 在32位和64位进程内的效率变化情况进行了研究, 为企业级应用迁移提供参考。

关键词:X64架构,SSIS组件,效率

参考文献

[1] (美) Darryl Gove.多核应用编程实战.人民邮电出版社, 2013.

[2]赖荣枢.Windows x64.运算环境的优http://www.microsoft.com/taiwan/technet/columns/profwin/42-Windowsx64.mspx, 2007.

32位MCU值得关注的技术 篇3

意法 (ST) 半导体公司大中国区微控制器事业部市场经理曹锦东补充道:未来是节能和环保的世界, 对MCU来说, 在各种工作状态的功耗水平, 以及电机控制技术领先否, 是衡量32位MCU是否满足未来发展要求的重要指标之一。同时, 未来也是网络的时代, 丰富的通讯接口也是一个重要的发展趋势。另一方面, 在消费电子领域, 用户体验性和友好的操作界面将变得越来越重要。

高性能

ARM中国总裁谭军博士说, 从市场需求来看, 我们认为32位MCU的发展趋势将围绕性能、通讯功能和用户界面三个方面。

“内核高性能及低功耗技术是各厂家关注的重点。”MIPS科技公司战略营销经理Ian Anderton说, MCU开发人员必须尽可能以最低的成本创建高性能设备。为了实现该目标, 他们需要有效的电源管理解决方案和确定性操作。他们也需要一个能够减少应用程序代码长度的架构, 反过来可以减少所需闪存, 进而降低设备成本。为了充分实现复用并满足不同的应用需求, 开发人员也需要一个具有高度可配置性和灵活性的标准架构。随着业界向32位MCU过渡, 他们也需要各种外设, 包括USB、HDMI和音频编解码器等高性能输入/输出。

NEC电子中国应用技术部部长赵明宇说, 32位的MCU在通用的基础上, 将来会向更低功耗, 应用专门化、可重用性等方面发展;在此基础上, 与之匹配的All Flash化、安全性等方面的技术也日益显得重要起来。

8位到32位的平稳过渡

对于有强大8位单片机背景的公司来说, 如何使用户实现从现有的8位平稳过渡到32位成为一个焦点。NXP半导体多重市场大中华区高级产品营销经理金宇杰说, 基于低端32位MCU产品开发要和8位的单片机一样简单方便:片上内存, 集成的片上外设接口, 无须外扩总线, 可以选择使用精简的操作系统或不使用操作系统, 低成本的通用开发工具。例如, NXP从8位单片机到32位ARM系统的开发没有门槛, 而同时得到的是32位的高性能:速度更快, 内存更大, 外设接口更丰富。为支持8位到32位的产业转移, NXP已推出一系列集成高达512K的片上闪存的微处理器, 近期又完成了1M片上闪存的32位微处理器。

Freescale微控制器部高级市场经理黄耀君说, 32位MCU未来会有两个发展。一是低端32位会越来越便宜, 例如Freescale的RS08在32位的翻版, Freescale将会在近期推出一系列低端32位产品, 特点是做8位MCU的控制延续, 在8位MCU功能不能满足的情况下, 用低端32位直接替代;另一方面, 是取代16位MCU市场, Coldfire在16位、32位的架构都有, 32位的发展越来越好。例如, 08年2月26日, Freescale推出了其Flexis JM系列微控制器 (MCU) , 特点是具有U S B连接功能, 3 2位M C F 5 1 J M 1 2 8 (J M 1 2 8) C o l d F i r e M C U以及8位MC9S08JM60 (JM60) 器件, 二者的软件和引脚是兼容的。

Microchip公司去年11月推出基于MIPS核的32位单片机, 公司执行副总裁Ganesh Moorthy说:“在推出32位MCU前, 我们冷静地思考我们要开发什么。我们要保持三个原则:1, 保持兼容性, 即在保持PIC单片机的精华同时, 便于移植;2, 有更大的容量和性能, 3便于初学者学习和购买。”Microchip PIC16位和32位单片机的内核架构非常类似, 引脚兼容。

瑞萨也计划在09年推出RX系列, 开发继承了H8/M16C族“DNA”的下一代控制用CPU。在08年2月底召开的“瑞萨论坛2008”上, 瑞萨宣布即将推出RX系列, RX是Renesas extreme的简称, 基础是32位产品, 低功耗方面采用了16位架构, 工作频率可达200MHz, 在CISC MCU中水平较高。同时RX将和瑞萨8位的R8C有很好的互通性 (不能说是继承, 因为内存不同, 但体系结构类似) 。RX与M16C的兼容性力求在三个层面保证:1, 汇编语言的兼容性, 现在的M16C汇编语言和H8S的汇编语言、程序可以自动编译到RX的机器上;2, C语言的兼容性;3, OS的兼容性。实际上从编译环境和使用方式来说, 编译器的形状、个体、大小都是一致的。

各派坚持自己的内核路线

尽管ARM在手机中独领风骚, 并有大力进军32位MCU领域的态势, 但是在MCU领域没有实现一统天下的局面。究其原因, 控制领域的应用是多种多样的。在2月底的“瑞萨论坛2008”活动中, 瑞萨科技 (北京) 有限公司北京技术中心总经理常清璞的话可以代表一些厂商坚持自己独有内核的原因。他说, 瑞萨的优势是产品已被大量应用在各种应用领域, 因此瑞萨能够采集到更全面的数据, 各种更典型的应用程序, 然后对它们进行分析, 因而解决方案更加全面和理性, 例如像外围功能的模块, 从定时器、马达控制、各种应用计时器, 到通讯, 瑞萨的IP非常丰富。这样从内核和功能来看, 瑞萨认为是有独特优势的。从实际市场的数据表明, 瑞萨也是比某某的ARM要占有更多的市场。瑞萨电子 (上海) 有限公司国内客户事业部执行总监邱荣丰补充道:“尽管ARM的控制快、速度快, 但存储不够快。瑞萨按照市场的要求, RX有快速的CPU, 包括快速度的存储器, 这是瑞萨的优势。”

SoC化

Microchip的Ganesh Moorthy认为, 通用型的32位MCU正在演化成为一种成本经济性极好的SoC解决方案, 集成了复杂的模拟功能 (例如ADC) 、大规模的内存、非常复杂的功能。例如:USB移动通 (USB On The Go) ]和高性能的内核 (例如MIPS核) 。在一个标准的32位MCU上实现水平如此之高的集成化, 可以为客户提供一种可以替换传统ASIC的经济性好的解决方案。

低成本化

ARM Cortex-M3是ARM公司近年推出的一个低成本内核, 主打存储器和处理器的尺寸对产品成本影响极大的各种应用市场, 是针对这些市场的低成本需求专门开发设计的微处理器内核。记者推测是ARM公司为其流行的ARM7 (1993年开始问世) 的补充或替代, 成本更低, 效率更高。

Luminary Micro公司是第一个采用ARM Cortex-M3 (06年夏天) 的勇于吃螃蟹者, 首席市场官Jean Anne Booth号称Luminary已经夷平了8位、16位和32位MCU之间的障碍:“我们可以提供具有32位性能、而价格堪与8位和16位解决方案相竞争的解决方案。”产品从Cortex-M3的20MHz@1美元 (与8位市场竞争) 一直到Cortex A8的1GHz, 在保证指令集兼容性的情况下, 其价格和性能的变化范围很宽。其优势是, 各家公司中第一次能够利用同一个指令集和代码基来满足其在整个性能和成本变化范围上的需要。Luminary Micro专注于工业市场上的电源、安全和连接部分。

ST公司2007年6月也推出了基于ARM Cortex-M3的产品, 并且新闻发布会的首站选择了偏爱低成本的我国。与Luminary不同的是, ST希望用Cortex-M3核心的MCU主打16位市场。ST赞誉Cortex-M3测试达到1.2 5 D I M P S/M H z, 而流行的ARM7TDMI只有0.95 DIMPS/MHz。在性能方面, STM32系列的处理速度比同级别的基于ARM7TDMI的产品快30%, 换句话说, 如果处理性能相同, STM32产品功耗比同级别产品低7 5%。同样地, 使用新内核的Thumb 2指令集, 设计人员可以把代码容量降低45%, 几乎把应用软件所需内存容量降低了一半。STM32系列产品按性能又分成两个不同的系列:STM32F103“增强型”和STM32F101“基本型”, 基本型的32位闪存、48引脚产品每万片1.8美元左右。除了工业、家电、消费电子应用外, 该系列还定位于低功耗的设备, 如血糖和血脂监测设备。

F P G A应用

由于FPGA已经进入65nm时代, 成本与SoC/ASIC越来越接近, 一些习惯使用F P G A进行批量的生产厂商, 需要增加MCU/处理器等功能。另外一种情况是, 尽管MCU是比较标准化、通用化的产品, 但还是不能满足所有要求。对于一些特殊的需求, MCU供应商往往希望先从FPGA开始, 进行小规模的生产, 在获得成功后再进行更大的量产。

IP的选择和RTOS匹配

对于FPGA中嵌入M C U, 需要考虑多方面。Xilinx亚太区DSP产品及解决方案营销业务的高级经理林鸿瑞说, 对于FPGA选用MCU内核, 除了MCU内核以外, 我们还必须考虑到对外设模拟/数字IP的需求, 以及M C U是否能够支持实时操作系统 (RTOS) 。

选择MCU内核仅仅解决了复杂问题的一部分。开发人员需要选择配有适当外设的MCU来满足自己的最终产品要求。如果选择的MCU带有许多用不到的外设可能会增加总体系统成本。另外, 对能够运行RTOS的MCU的需求也在增长。使用RTOS有几大显著原因:除了提供实时多任务能力以外, R T O S施加的任务型设计流程比没有RTOS的系统更清晰, 更容易组织;RTOS支持代码重利用, 通过提供中间件链接和缩短开发时间为应用提供有用的服务。在时序关键的应用中, RTOS可预测的响应时间也进一步保证了应用的质量。

为进一步适应这一趋势, 除已经为Microblaze软内核提供的免费IP以外, Xilinx公司还新提供了4款免费IP (IIC、UART、FPU和10/100 lite EMAC) 。为满足RTOS需求, Xilinx还发布了其支持Linux2.6 RTOS的Microblaze软内核版本。

Cortex-M1

32位并行浮点乘法器设计 篇4

随着VLSI技术的发展, 作为CPU与DSP中数据路径上的关键部件之一的乘法器也从过去由软件完成逐渐演变成为一个重要的硬件部件。现对32位定浮合并乘法器进行研究与设计。

1 IEEE-754浮点格式

在利用乘法器做乘法时, 不仅要处理整数运算, 而且还要处理小数运算。浮点表示法是一种在不增加位数的前提下, 扩展表数动态范围的表示方法。设计中用到的是IEEE-754浮点标准, 它是目前使用最为广泛的浮点数标准[3]。

图1表示了设计中用到的单精度浮点数的表示格式。

2 乘法器设计方案

根据所用浮点数格式。浮点乘法的主要运算是尾数相乘, 指数相加尾数相乘是与指数相加并行的。尾数的乘积是原尾数长度的两倍。多余的位在舍入处理中舍去。最后的一步是结果的规格化和舍入处理。符号位则是通过相同为“0”, 不同为“1”的原则得出。

2.1 乘法器的尾数部分逻辑设计

尾数乘法器完成浮点数的尾数乘法, 在计算机实现乘法的时候, 通常是通过“移位与累加”来完成的。为了节约器件, 一般采用原部分积右移的方法来完成新部分的左移。

2.1.1 Booth编码

Booth编码是为了解决有符号乘法运算提出的一种乘数编码方法[3]。

n位的二进制补码数B可以表示成。

B就被每一组3位的扫描数据bi+1, bi, bi-1根据 (-2bi+1+bi+bi-1) 的值重新编码。Booth编码算法是将多位扫描与跳过连续的“0”和“1”技术结合在一起的。

采用每次扫描多于一位的乘数, 根据这些位的值产生出相应的被乘数的倍数, 这种方法可以大幅度地减少部分积的个数, 可以提高乘法器的执行效率。

每次编码使用的是乘数B的3位。可得表1所示的编码表。

通过对该编码表进行化简可得出如下的控制信号产生的表达式

采用上式的Booth编码控制信号的产生逻辑如图2所示。

2.1.2 部分积产生电路

为了加快部分积加法的操作, 避免进位信号的传递, 采用了进位保留加法器。使用这种进位保留加法器进行部分积加法的计算过程中, 进位信号暂时保存, 并不在同级的加法器之间传递, 而是送到下一级的加法器中进行处理。这种加法器可以使输出个数减少, 故又称之为压缩器, 根据表1可得出32位定点乘法的部分积产生公式

其中n=0, 1, …, 16。

由此产生的电路逻辑如图3, 当NEG2n=1时, 上式及图3只完成了每位。为了加快部分积加法的操作, 避免进位信号的传递, 采用了进位保留加法器。这种加法器可以使输出个数减少, 故又称之为压缩器, 以上所产生的每四个部分积通过一个4:2压缩器相加, 得到该级的伪和。

2.1.3 阵列的安排

所设计的32位乘法器, 采用二阶的Booth算法, 共产生18个部分积, 对各种阵列安排进行比较。当每个部分积PPn (n=0, 1, …, 17) 产生之后, 将它们相加便得到乘法操作的结果。为了使乘法器取得较高的速度和较好的规则性, 采用了IA (Iterative Array) 乘法器和Wallace树型乘法器之间的折衷方案。在设计中采用了如图4所示的阵列结构, 这种结构针对前面所提到的树型结构相比具有最小的AT2, 同时结构规整, 可重复性好, 易于VLSI实现。

2.1.4 伪和相加电路

对于部分积产生模块所的局部进位与伪和将采用三级超前进位加法器与跳跃加法器相结合的方法完成最终的64位加法运算。此结构不仅速度快于三级超前进位加法器, 而且面积也较小, 所以性能明显优于三级超前进位加法器。

2.2 乘法器的指数部分逻辑设计

浮点乘法计算结果的指数真值是两个操作数的指数真值的和, 由于IEEE 754浮点数标准中指数是采用偏移码表示的, 也就是说两个指数都包含了偏移量255, 所以需要减去一个偏移值才能得到符合标准的结果。

2.3 其他模块逻辑设计

为了得到符合IEEE-754标准的值, 还需要进行规格化, 舍入等处理。之后得到正确的乘积值。

3结论

设计首先采用CADENCE公司的NC-Verilog对Verilog代码进行功能仿真和验证;再采用SYNOP-SYS公司的逻辑综合工具Design Analyzer和0.18μm SMIC标准单元库进行逻辑综合和优化, 得到0.18μm SMIC工艺下的门级网表;然后再用NC-Verilog对门级网表加上标准延迟文件 (.sdf) 进行逻辑仿真;最后对正确的门级网表采用CADENCE公司的布局布线工具SiliconEnsemble布出最终的物理版图。

设计采用0.15μm的单层多晶硅六层铝CMOS工艺设计, , 最后通过布局布线后得到的版图尺寸为767.181μm×767.181μm。其规模为37 206个晶体管。

参考文献

[1]许祺.32位并行乘法器的研究与设计.[博士学位论文].西安微电子技术研究所, 2002

[2]沈绪榜.LS微处理器与计算机系统.骊山微电子公司技术资料.2000

[3] IEEE Std754—1985.IEEE Standard for Binary Floating-point arith-metic.IEEE.1985

[4]张亮.数字电路设计与Verilog HDL.北京:人民邮电出版社, 2000:41—44

32位单片机 篇5

利用Silicon Labs专利的双crossbar技术和拖拽式GUI, 开发人员能够容易的选择所需模拟和数字外设, 并为外设分配引脚。而其他同类MCU通常预定义外设位置和引脚, 导致潜在引脚冲突, 迫使开发人员改变设计或使用更大、更昂贵的封装。Silicon Labs公司crossbar设计和基于GUI的AppBuilder软件, 使开发人员能够优化其外设组合和引脚分配, 使外设靠近所连接的器件, 从而减少引脚冲突, 简化PCB布线, 最大程度减少PCB层数, 并最终降低系统成本。

为简化基于Precision32系列产品的嵌入式应用开发, Silicon Labs提供丰富的硬件和软件工具集, 包括具有可替换MCU、射频元件和其他子系统的统一开发平台 (UDP) , 可适应各类开发人员的应用需求。UDP包括一个母板、多个模块化子板和用于原型设计、扩展和系统集成的面板;同时也支持MCU代码和固件开发、多种网络和协议栈以及USB驱动。为了加速进行sub-GHz RF设计, Silicon Labs为UDP提供RF测试卡, 支持该公司最新Si446x EZRadioPRO®收发器。

Silicon Labs优秀的基于Eclipse集成开发环境 (IDE) , 包括编译器、调试器和在线信息界面, 支持多种关键应用信息, 例如:含有示例代码、数据手册、原理图、PCB封装、应用笔记、版本控制和自动更新的软件库。Silicon Labs另一核心IDE工具是基于GUI的AppBuilder软件, 开发人员能够通过该软件工具快速和图形化的选择其外设集和属性、配置时钟模式、定制引脚和产生源代码, 无需编写代码或阅读数据手册即可实现所有功能。

基于FPGA的32位除法器设计 篇6

关键词:FPGA,VHDL,除法器,减法,移位

0 引 言

除法是数值计算和数据分析中最常用的运算之一,许多高级运算如平方根、指数、三角函数等都与其有关。在FPGA中,有加、减、乘、除的算法指令,但除法中除数必须是2的幂,因此无法实现除数为任意数的除法[1]。然而除法器是微处理器的一个重要运算单元, 除法器的运算速度、性能、功耗等都会影响系统的整体性能,相对于其他运算操作,除法很复杂且其操作的效率很低,所以研究的人很少[2,3,4,5],但是对除法的忽视会导致系统整体性能的下降。因此当前不但应该研究除法,而且研究的重点应该放在提升运算速度上。如今大部分电子系统的最大位宽只有32位,因此本文用VHDL编写了实现32位数相除的除法器。本文设计的除法器,不仅能实现有符号数的运算,也可以实现无符号数的运算。

1 设计原理

除法器的算法可分为两类: 基于减法操作和基于乘法操作的算法。基于乘法的除法把除法看成是乘法的逆运算。如下面的式子所示:

undefined

式中:A为被除数;B为除数;Q为商;R为余数。这样的算法主要有SRT,Newton-Raphson和Goldschmidt 算法等[6]。除法在很多方面与乘法不同,最重要的区别就是在乘法中所有的部分乘积都可以并行生成,而在除法中每个商的位都是以一种顺序的过程确定的,因此速度较慢。而以FPGA为硬件基础,基于减法的除法器算法不仅节省资源,速度也较快。本设计中的除法器,巧用VHDL语言,将有符号数和无符号数的除法结合在一起,节省了资源,也提高了速度。其算法如下:

对于32位无符号被除数a,先将a转换成高32位是0低32位是a的数temp_a。在每个周期开始时temp_a向左移动一位, 最后一位补零, 然后判断temp_a的高32位是否大于等于除数b,如是则temp_a的高32位减去b并且加1,得到的新值仍赋给temp_a;如不是直接进入下一步。上面的移位、比较、减法(减法视情况而定)要进行32次,经过32个周期后, 运算结束,所得到的temp_a的高32位为余数,低32位为商。将移位、比较和相减放在同一个循环中,去除了不必要的延时,增加了设计的可靠性。

对于32位有符号数的除法,算法与上面类似,只是需要判断商和余数是正数还是负数。令d=a(31)⊕b(31),如果d=0则被除数与除数同为正数或者负数,最终商为正数;如果d=1说明被除数与除数一个为正一个为负,最终商为负数。被除数是负数时余数为负,否则为正。有符号数的除法采用的算法是将被除数与除数均变成无符号的32位数,紧接着的计算过程与无符号数除法一样。最后根据d的值对商作处理,如果d=0商不需任何处理,如果d=1则将商取反加1才是正确的结果。余数的调整则根据被除数的符号位进行。32位除法器的框图如图1。当you_wu为1时进行有符号数运算,否则进行无符号数运算。

2 程序设计和仿真图

由上面的原理知道本设计用的最多的操作就是移位、比较和减法。有设计者指出分别用3个模块实现移位、比较和减法,再加上控制模块共4个模块。可是此方法实现的仅是8位无符号数的运算[5],不能实现有符号数运算且程序很复杂,占用的FPGA资源也多。也有学者提出将被除数作为被减数、除数作为减数,作减法,差重新置入被减数,反复相减,直到被减数小于减数为止,记录能够相减的次数即得到商的整数部分[1]。这样做不仅占用的逻辑资源很多,而且随着被除数与除数差值的增大、相减的次数增多,速度也就降低。本设计不分模块,仅用两个进程,巧妙使用loop语句便可方便的实现32位有符号和无符号数除法。另外需要注意的是,被除数与除数的临时存储单元temp_a和temp_b必须设为变量,如果设置成信号即使编译完全正确,也得不到正确的仿真结果。循环变量n的初值不能在设定变量时设置,必须在循环开始前设置,否则程序将成为死循环,只有注意到上面两点,loop语句才能真的起到巧妙的作用。除法器源程序如下:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

use ieee.std_logic_arith.all;

use ieee.numeric_std.all;

entity divide is

port(you_wu: in std_logic;--此信号为1进行有符号数运算,否则是无符号数相除

a,b : in std_logic_vector(31 downto 0);

yshang,yyushu: out std_logic_vector(31 downto 0));

end;

architecture one of divide is

signal tempa,tempb: std_logic_vector(31 downto 0);

signal fuhao,sign,d:std_logic;

begin

d<=(a(31) xor b(31)) and you_wu;--有符号数相除时商的符号

sign<=a(31) and you_wu;--被除数为负数时余数取负值

process(a,b,you_wu)

begin

if you_wu=′1′then--将有符号数转为无符号数

if a(31)=′1′then

tempa<=not a+1;

else

tempa<=a;

end if;

if b(31)=′1′then

tempb<=not b+1;

else

tempb<=b;

end if;

else--无符号数不作变化

tempa<=a; tempb<=b;

end if;

end process;

process(tempa,tempb,fuhao,sign)

variable n:integer;

variable temp_a,temp_b: std_logic_vector(63 downto 0);

begin

temp_a:= "00000000000000000000000000000000" & tempa;

temp_b:=tempb & "00000000000000000000000000000

000";

n:=0;

while (n<32) loop --32次操作

temp_a:=temp_a(62 downto 0) & "0";

n:=n+1;

if temp_a(63 downto 32)>=tempb then

temp_a:=temp_a-temp_b+1;

end if;

end loop;

if d=′1′then --商为负数时用补码表示

temp_a(31 downto 0):=(not temp_a(31 downto 0))+1;

end if;

if sign=′1′then-余数为负数时用补码表示

temp_a(63 downto 32):=(not temp_b(63 downto 32))+1;

end if;

yshang<=temp_a(31 downto 0); yyushu<=temp_a(63 downto 32);

end process;

end;

图2和图3是32位除法器的仿真图。图2中令you_wu为0,实现无符号数相除,图3中you_wu为1,实现有符号数相除。本设计运行速度较快,当两个值相差很大的数(不管是有符号数还是无符号数)相除时,速度优势将更加明显。另外图2和图3中没有任何毛刺,说明该除法器性能很稳定,不仅速度较快,而且没有竞争冒险,是一个成功的设计。

3 结束语

在FPGA的设计中,要关心两个参数:逻辑资源的占用率和速度[7]。本文给出的32位除法器占用的逻辑资源较少;而速度主要取决于系统时钟,如果系统时钟为50 MHz,则完成32位数除法所需时间不到1 μs。文中有关代码均经QuartusⅡ编译通过,可以用于实际系统设计。

参考文献

[1]朱卫华,郑留平.可任意设置计算精度的整数除法器的设计[J].国外电子测量技术,2008,27(2):16-18.

[2]栗素娟,阎保定,朱清智.基于FPGA的快速浮点除法器IP核的实现[J].河南科技大学学报:自然科学版,2008,29(6):34-37.

[3]刘志刚,汪旭东,郑关东.基于SRT算法的单精度浮点除法器[J].电子技术应用,2007,33(10):56-58.

[4]潘明,许勇.基于加减交替法除法器的FPGA设计与实现[J].微计算机信息,2008,24(9-2):141-143.

[5]基于VHDL的8位除法器的实现[J].微计算机信息.2006,22(12-3):277-278.

[6]姜咏江.基于QuartusⅡ的计算机核心设计[M].北京:清华大学出版社,2006.

32位单片机 篇7

有些厂商目前提供了数百种结构,其中包含了外设和易失性与非易失性存储器的不同组合,外加针对应用所需的数据宽度进行处理的控制CPU。最后,也是最重要的是,各个产品系列之间的软件兼容性将有助于帮助客户们延长其程序的寿命。它还有助于让编程者能避开重新学习新的环境和重新编写代码的麻烦。

微控制器业务方面的工程化努力

高性能微控制器的架构发展已经遭遇了设计方面的限制,这些约束很容易与新的C P U引擎的架构所面临的困难相匹敌。为了在给定的功耗水平上达到最佳的性能,CPU设计者们常常要对付诸如半导体物理、电路设计和架构的具体实现方面的一些限制条件。

来源:SIA和In-Stat 2008

微控制器设计者可能无需采用最新的半导体工艺流程,但是比性价比更重要的是,必须面向成本进行设计。裸片尺寸的缩小是一件好事,但是这还不够。设计者必须在设计中考虑到芯片尺寸和引脚输出分布。微控制器需要安装到空间狭小的地方。与通用型CPU设计者相比,微控制器的架构还必须能针对所面向的应用来提供恰当的外设和内存。其设计必须具有灵活性和可配置性,以便帮助M C U厂商能快速响应客户在外设与片上内存类型/规模的不同组合方面提出的要求。事实上,微控制器常常带有其针对的应用所需要的片上内存,具有更多的片上系统的属性,而不像一个需要外部存储器的ASIC。

完整的M C U系统必须提供对片上调试的支持,操作系统将支持诸如内存保护等功能,并且,如果可行的话,提供实时响应能力。

要满足一个高端的微控制器的诸多设计参数要求,商业和工程方面的人员之间需要进行非常紧密的合作。

在解释引入32bit MCU的必要性时,有些厂商宣称,他们预计这些新的芯片能够促成从8bit和16bit CPU到32bit性能平台的转移。不过,MPR(《微处理器报告》简称)预测,目前只有部分8bit和16bit MCU应用会向更高数据位带宽(bit width)上迁移。这一现象的发生有其合理性,首先是工作负荷方面的原因,其次是芯片尺寸、引脚方面的考虑,另外也由于位数更高的器件的价格的不断下降。MPR估计,32bit M C U由于具有性能更高的内核和能提供更多的芯片功能—这些功能可以实现目前被认为是M C U应用范围之外的那些新应用,将夺走ASIC所占有的市场份额。

资料来源:SIA和In-Stat 2008

简要地考察微控制器行业,可以激发起人们兴趣:在这个行业中,2007年,集成了高性能的处理器和外设的32bit芯片的平均售价为4.00美元,这样低的价格必须依靠大批量的销售来补偿。

正如图1所示的那样,8bit MCU在2004和2007年间销售了约10亿只,在此期间,其销售额以约25%的速度持续增长—仅比全球市场在2002~2005这3年间所经历的增长低几个百分点。MPR的估计得到了Microchip的市场营销部门的支持,他们宣称,该公司的8bit MCU业务表现事实上优于前些年。在估计8bit MCU业务时,Microchip的业务情况是我们所能采用的最好的标尺。

2004至2007年间,MCU交货量增长幅度方面进一步出现了20亿只的上扬,这主要应归功于16bit、32bit以及更高档的MCU的贡献,这样一来,全球已经交付的M C U的总量接近了100亿只。16bit MCU的产品交付量出现的令人始料未及的增长,可能要部分归因于SIA-WSTS组织对MCU的位数的定义,该定义不同于处理器设计者的定义。SIA-WSTS将一个MCU的数据位宽度定义为处理器与片外装置通信时的数据线的数量。设计工程界和M P R则将一个C P U内核的数据位宽度定义为一个A L U在一个周期中所能处理的数据的宽度。除非SIA和WSTS改变其定义,我们势必看到内藏32bit引擎的16bit MCU所带来的持续的成功,因为M C U的引脚数量极为重要。

既然In-Stat还没有出版对其微控制器报告的更新,我们可以通过考察MCU在SIA和WSTS的应用分区中的表现来获得部分的商业信息。图2示出了各种bit数的MCU在2007年中的交货量(估计值,单位是千只)以及2006到2007年间单位交货量的百分比的变动情况(MPR的估计)。对应的2004~2007期间出现的变化的0%的坐标轴,不同于表示交货量的x轴,有鉴于此,我们可以看到,在蜂窝式通信、IC卡(智能卡)、汽车和计算机应用方面出现了最高的交货量的增长。无线基础设施则表现出最大的百分比变动,而其在2007年的批量并没有达到让其成为32bit MCU的重要目标所需的单位交货量。

上一篇:蚁群算法优化策略综述下一篇:部门文化