版主
主题
回帖0
积分10609
阅读权限200
注册时间2008-11-22
最后登录1970-1-1
在线时间 小时
|
Nios II 嵌入式系统驱动设计(二)
% H9 [. V7 m: u7 S6 e 在SOPC中自定义元件的端口设置解析 中讲述了自定义元件的端口设置,在本文中将详细讲述如何将自定义元件嵌入SOPC Builder中,以及将该元件加入SOPC系统,并通过运行软件测试该元件性能。* q, c4 y8 }( Z( I' Z3 l4 n
新建一个文件夹ip,将Ckecksum Hardware Accelerator的源文件checksum_accelerator.v,checksum_transform.v,latency_aware_read_master.v,slave.v复制到该文件夹下。: |- R4 f' h- _
打开SOPC Builder,单击左上角的Create new component…,弹出如下对话框: I7 s+ [' @4 L- b1 k2 M
http://space.ednchina.com/upload/2008/12/8/0145f901-e4bc-44f6-a7f5-ed68d5b2f4de.jpg
/ ]: x9 |9 l: |1 B$ ~Introduction页面是对component editor的简单介绍。
2 T6 j4 L/ s# c- Xl
- w/ y$ k' w' o4 h: uHDL Files
( \. _3 q* d+ Zhttp://space.ednchina.com/upload/2008/12/8/7cd658f6-9df8-46ce-892c-c3f42f14267f.jpg* U, c" D, n$ \. K5 W
单击Add…,选择刚才新建的ip文件夹,将该文件夹下的所有.v文件选中加入,component editor并会进行分析,主要是对端口的分析,将顶层文件的Top复选框打上勾。如果文件有改变可以点击Reanalyze HDL Files重新分析。
- T9 k9 X; A" ]( U; A: q
2 W3 A% H+ h8 w' `' X除了导入HDL文件外,component editor还提供另一种方法可以将端口export到SOPC系统之外,直接在Signals页面手动加入信号或在Templates中加入已经定义好的端口信号,用户再自己修改。导入HDL文件后,Templates下拉菜单为灰色,无法加入。3 C `9 q- `; G. i, E9 X
l
) T o# s3 y; \Signals6 H3 [+ c' g9 O6 G0 n
http://space.ednchina.com/upload/2008/12/8/e401a4f3-c4e3-4aca-9d50-7b5e593d4bd6.jpg
6 ]0 q5 P- Z+ S" x3 c6 n这里的信号是component editor分析了HDL文件后自动从文件中提取的端口信号,用户需要设置interface,Signal Type,Width,Direction以使用户端口信号与Avalon总线信号相对应,如果用户端口信号的命名方式参考 SOPC中自定义元件的端口设置解析 中的要求,则component editor自动识别出相对应的信号设置。+ J! I D2 A) y
l
# `0 ^2 j) e4 k0 Z2 L+ x! ainterfaces" K* w8 K1 _# A7 T
http://space.ednchina.com/upload/2008/12/8/69998e9a-b135-49c6-a107-7f48aaafd617.jpg
" ]2 u/ U7 e& f+ wInterfaces的类型在SOPC中自定义元件的端口设置解析 中有说明,主要有Master,slave,clock input等10种,在每种类型下面可以设置该类型interface的属性参数,如时序,流水线传输,interface的同步clock等。如果显示了除定义以外的interface,则点击Remove interfaces With No Signals删除。- J( y$ N& \$ d6 j1 g
l! C( f% A( @& v# ?8 Y/ X5 @
Component Wizard7 Y+ ~" ~9 g3 t, I5 m; U
http://space.ednchina.com/upload/2008/12/8/1541b6c0-30ba-4c59-a1dc-145f90d69c6b.jpg
1 t! w/ z S3 x在Component Wizard中可以设置元件所属类型名称,元件显示名称,版本号等信息,点击Preview the GUI…可以预览,如果在顶层HDL文件中定义了一些Parameters,可以这里加入以便让用户在实例化时可以设置这些参数。
2 x' _$ J& \- }2 A4 ?' {9 D$ I# z$ b' Z; g- [8 N% a. G9 P/ r
全部设置完后,点击Finish…在ip文件夹下产生checksum_accelerator_hw.tcl文件,该文件并是Component editor根据用户设置生成的文件,该文件提供给SOPC Builder所有需要的信息。; T4 u9 l" N/ E* _0 W. r
. F# ]' t% |; K$ G" \- I1 L9 ?$ t& |8 G
除了硬件文件外,为了能用软件执行给元件,需要添加软件驱动程序。在ip文件夹下新建HAL文件和inc文件,ip文件结构如下:$ S" H; V- w6 K, z4 S* g
其中HAL文件夹下的inc文件夹下包含checksum_accelerator_routines.h为软件API的头文件,HAL文件夹下的src文件夹下包含checksum_accelerator_routines.c为软件API的源文件,以及component.mk,该文件在编译时提供驱动程序源文件信息。在ip文件夹下的inc文件提供元件的寄存器映射(register map)文件,该文件提供软件读写元件寄存器的地址。
. [" X: c0 }# k- u9 e: b( {' w, ^. h: m0 v, x- x+ U) z0 J% w/ n* A$ ?, x
所有的工作完成后,将ip文件复制到QuaetusII工程目录下,打开该工程的SOPC Builder,此时在左边栏出现刚才新增的元件。1 H0 V6 v/ u1 V! \
为了测试新增元件的功能,建立带有该元件的SOPC系统:
+ F3 D$ ?4 u% p/ S4 M( I, v* Ahttp://space.ednchina.com/upload/2008/12/8/e544cdaa-0598-47a4-aacf-6ea241d69a01.jpg
* q7 r! |% m, i% A0 Y, a! t同时建立以该硬件为基础的软件工程,将文件test_checksum.c的内容复制到应用工程的源文件中,编译,下载,运行后,console窗口出现如下结果:! |' j1 {- f" H* G; i% K: E
http://space.ednchina.com/upload/2008/12/8/57d4449a-bd2d-458b-9ab7-c483b797af1b.jpg
5 I# Z: n1 J% C; H; `$ K8 O8 c软件首先产生64KB的随机数,然后分别用软件cheksum和硬件checksum,输出两次checksum的结果,可以看到硬件checksum比软件checksum快了65倍,硬件加速起到了很大的作用,因此在关键算法上可以采用硬件实现,以提高速度。
c7 T; F' |1 Y' O4 [ |
|