“安芯网盾”完成过亿元A轮融资,高瓴创投领投
06-18
摘要:介绍了FreeARM7 IP核的基本概述及其接口特性,并基于LPC对IP核进行了扩展。
结合USB 1.1设备控制器IP核和定制硬件逻辑,构建了微控制器功能验证环路。
开发了主机端的验证程序、驱动程序和通信软件。
下载并执行验证程序的结果表明,功能验证回路工作正常,微处理器工作稳定。
关键字:FteeARM7;液化石油气;微处理器; USB 1 FreeARM7 IP核简介 ARM7系列FreeARM微处理器(简称FreeARM7)首次发布于社会主义。
com,由Free-arm和其他ARM爱好者基于ARMv4架构开发。
整个 IP核代码由可综合的Verilog HDL描述。
界面简单,描述简洁,整个代码不超过一行。
整体设计上,采用三级流水线和哈佛结构,完全兼容各种中断和操作指令(Thumb和协处理器指令除外)。
经过评估可以看出,该IP核基于FPGA和SMIC工艺库具有良好的实现效果。
FreeARM7接口定义如表1所示,可归纳为4类: ◆系统接口,提供系统控制信号; ◆中断源,提供ARM架构所需的5个中断信号; ◆ROM接口,与提供指令的ROM的接口; ◆单口RAM接口,单口RAM与外设进行数据交换的接口。
其中,单口RAM接口可以达到两个目的:一是连接单口RAM,使FreeARM7能够正确读写数据;二是连接单口RAM。
其次,连接外设,使FteeARM7能够正确操作外设。
2 微处理器改进和逻辑扩展 基于FreeARM7的微处理器改进和逻辑扩展的结构如图1所示。
预期目标是在上位机上编写嵌入式程序,并将其汇编成机器代码,然后通过USB 1.1设备控制器将其传输到双端口RAM。
在微处理器代码下载模式下,代码下载控制逻辑将代码传输到双端口RAM中。
将机器代码加载到ROM中,然后开始微处理器的正常工作模式。
微处理器执行ROM中嵌入的代码,接收主机通过USB传输来的参数值,并将运行结果通过USB返回给主机。
基于Cyclone II FPGA实现时,ROM、RAM和双口RAM均使用Quartus II软件中的MegaWizardPlug-In。
Manager工具实例化相应的存储模块,其他硬件逻辑扩展以IP核的形式出现(Verilog描述)。
2.1 微处理器IP核改进 FreeARM7 IP核是微处理器的核心部分,不能直接作为微处理器使用。
原因是数据总线需要读取ROM中的数据。
本文选择Philips公司的32位ARM7微处理器LPC作为原型。
LPC具有适当的存储资源,内嵌2 KB片上静态RAM和8 KB Flash存储器,具有良好的软件移植性和运行可靠。
参考LPC的工作原理,当FreeARM7的输出信号ram_addr的最高4位为4'b0时,表示数据总线需要读取ROM数据。
为了解决这个问题,一个新的包装文件lpc_arm. v 完成该功能。
其作用是:当ram_addr[31:28]==4'b0时,逻辑直接从rom_en、rom_addr、rom_data接口读取ROM数据并发送给ram rdata。
2.2 USB1.1设备控制器 本文选用的USB设备控制器是课题组早期的项目之一。
它是在 Opencores 网站提供的主要开源版本的基础上进行改进的。
其结构如图2所示。
该IP核支持低速和全速模式,共有1个控制传输端点(EP0),7个其他可配置端点,无需微处理器即可响应主机对设备的枚举。
收发电路主要完成模拟/数字信号转换,即在OUT事务中,将模拟信号D+和D-转换为串行接口引擎模块可以识别的数字信号rxd、rxdp和rxdn,并在在事务中,数字信号txdp和 txdn在使能信号txoe的控制下转换为模拟信号D+和D-;串行接口引擎模块主要完成数据包的发送和接收,根据传输方向可分为接收和发送,主要包括总线检测、同步检测、时钟恢复、不归零反向编解码、位填充和位去除、数据的串行/并行转换;协议层包括协议引擎状态机、分组、拆包、FIFO控制器;端点O控制器主要负责响应主机标准请求;描述符RAM存储设备的各种描述符;其他端点控制器和FIFO提供配置接口,预留给开发者移植IP核。
2.3 代码下载控制逻辑 该逻辑的主要功能是在代码下载模式下将双口RAM中的汇编程序传输到ROM中。
其主要任务是产生读双口RAM的使能信号和地址信号,以及写ROM的使能信号和地址信号。
通过硬件逻辑中的计数器实现。
当系统复位或退出代码下载模式时,计数器:rom_wr_cnt 被清零。
否则,USB接收到一个数据包(64字节)后,计数器使能信号cnt_vld置为有效,rom_wr_cnt开始计数。
cnt_vld直接作为读双口RAM的使能信号,cnt_vld在两级cache之后作为写ROM的使能信号。
同时,rom_wr_cnt的低8位直接作为读双口RAM的地址信号,rom_wr_cnt计算结果经过两级缓存后作为写ROM的地址信号。
当64字节传输完成后,cnt_vld被设置为无效。
此时,rom_wr_cnt 锁存当前值。
等待接收到下一个数据包后,cnt_vld 再次设置为有效。
代码下载控制逻辑将下一个数据包的数据附加到ROM,并重复该过程。
完成的代码通过USB接口下载到ROM中。
3 嵌入式代码开发 3.1 uVision3.63环境设置 使用μVision3.63新建一个工程,选择设备类型为NXP(飞利浦创立)系列LPC,设置基本使确认以下信息: ① 在“输出”选项卡中选择“创建 HEX Flie”,以确保生成可供下载的机器代码。
② 在“Target”选项卡中选择Code Generation为“ARM-Mode”,以确保机器代码是基于ARM指令集生成的。
③分别在“C/C++”和“Asm”选项卡中选择“EnableARM/Thumb Interworking”,以确保生成的代码仅包含ARM指令。
3.2 Bootloader 设置 Bootloader 启动一般分为两个阶段。
第一阶段主要包含依赖于微处理器架构硬件初始化、设置堆栈和跳转到第二阶段的C程序入口点的代码,通常用汇编语言实现。

第二阶段通常用C语言完成,以实现更复杂的功能,使程序更具可读性和可移植性。
在μVision3.63软件自带的示例项目“Hello”中,通过以下三行代码实现了两阶段工作切换: 由于本文讨论的微处理器仅基于FreeARM7做了一些基础工作扩展来说,微处理器架构硬件单一,因此第一阶段主要是设置堆栈位置和大小。
USB接口的初始化在第二阶段C程序中进行。
初始化程序如下: 4 微处理器的功能验证 完成前面的工作后,借助FPGA对微处理器进行功能验证。
选择Altera的DE2开发板作为硬件逻辑实现载体。
微处理器IP核工作时钟为开发板上输入的27 MHz晶振,USB控制器IP核工作时钟为27 MHz晶振乘以48 MHz。
功能验证流程如图3所示。
在主机上使用μVision 3.63编写并编译验证程序后,微处理器进入下载模式接收主机对器件的代码下载,然后进入用户模式接收验证主机传送的程序参数。
值,运行代码后,将执行结果返回给主机,通过与主机软件仿真结果进行比较,达到验证微处理器运算结果的目的。
4.1 验证程序开发 数据加密标准(DES)是一种众所周知的对称密钥分组密码,由美国标准FIPS 46-2定义。
基于ARM7指令系统,DES的C语言实现并不困难,但却是对IP核工作能力的综合考验。
DES算法分解为密钥生成算法和加解密算法,分别对应验证程序中的两个子功能。
最终的代码实现框架如下: 4.2 主机驱动及通信软件开发 Windows 驱动模型(Windows Driver Model (WDM))旨在提供灵活的方式来简化各种驱动的开发,实现对新硬件,降低驱动开发复杂度。
使用Driver Studio开发基于WDM的USB驱动,会自动生成驱动框架,在此基础上添加读写管道即可完成驱动开发。
软件是用MFC编写的,其主要功能是: 将hex文件以十六进制形式发送到USB,并以十六进制形式接收并显示DES程序标准测试向量。
K=1A(20DEC46,明文P=02CD,密文C=DDOCFEBCF3FDE。
通讯软件中的代码下载和验证数据发送接收如图4所示。
根据上述原理,还编写并下载了其他几个验证程序写入ROM,单片机的执行结果全部正确。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-18
06-17
06-17
06-17
06-18
06-17
最新文章
使用电子管有哪些注意事项?如何检查电子管之间是否短路?
博通支付1200万美元和解SEC财务欺诈指控
八名运营商高管确认加入虚拟运营商
内蒙古农牧区雷电灾害成因分析及防雷对策
北京联通将5G应用于世园会远程医疗急救
TD-SCDMA最后一轮冲刺测试启动,产业前景更加光明
专访阿里云总裁王健:云计算服务平台梦想成真
USB2.0控制器CY7C68013的接口设计与实现