系统设计采用Altera公司的新一代低成本FP—GA—CycloneⅡ系列的EP2C35实现SOPC系统设计。系统硬件主要包括FPGA上的NiosⅡ处理器系统、FPGA外的接口和外设两部分。NiosⅡ处理器系统由基于Avalon Bus的NiosⅡCPU、串行接口、PIO、PIO控制器、存储器控制器、定时器以及片上RAM等IP组成。
外设包括:信号拾取整形模块、USB—Blaster-模块、Flash、SDRAM、LCD模块、电源模块、键盘等。信号由光电编码器拾取后经整形模块进入NiosⅡ处理器,Clock(系统时钟)模块提供50 MHz有源时钟和用户自定义的外部时钟。上位PC用软件接收RS232发送的连续采样数据,根据规定好的协议,解码出需求的数据进行分析。4个按键开关和PS/2,用于控制信号采样和数据发送,满足用户多种控制要求。系统通过PIO可实现对整形模块、键盘、LCD等外设的控制。存储器控制器分别与片外Flash和SDRAM连接,实现对存储器的访问。
2.2 系统硬件定制
2.2.1 FPGA硬件模块设计
硬件电路板测试完成后,需要设计FPGA硬件模块实现数据采集。模块各端口列表,如表1所示,信号采集仿真波形,如图2所示。输出信号中所有光电编码器时间是系统时钟个数的计数值。最后通过软件模块计算得到平均扭角、瞬时扭角以及误差。
如图2所示,当in_en高有效时,在WrestFlap_one上升沿,寄存器gride_cnt加l,同时gride_time,circl_time开始计算。当下一个WrestFlap_one上升沿时,寄存器gride_cnt加1,直加到一圈格数,然后又重新开始重复的计算。同时当下一个WrestFlap_one上升沿时gride_time输出计算了上一圈的光电编码器一格时间。当gride_cnt一圈数完时,circl_time输出上一圈的总时间。在WrestFlap_one下降沿,gride_en输出使能采样信号,高有效,此信号做为后端fifo写使能信号。(图中椭圆区域为一圈光电编码信号的输出,仿真中规定一圈有10格,第1格对应的gride_time是207,第2格对应的gride_time是219…。)
2.2.2 SOPC硬件模块加载及系统构成
在SOPC Builder中进行扭振测量系统配制。添加Ahera自有的丰富IP核,选择SOPC Builder生成HDL代码的类型为Verilog,选择芯片EP2C35,确定系统工作频率,配制处理器选项,定义处理器地址,配制外围设备,安排存储器地址和范围,为外围设备和接口设置所需的中断优先级。同时为优化硬件设计,系统设计了用户自定义外设模块。SOPC Build所用模块如下:
(1)NIOS II Processor CPU;
(2)tri_state_bridge(Avalon连接总线);
(3)lcd_16207_0(LCD显示);
(4)sdram,cfi_flash(存储器);
(5)button_pio,switch_pio(输入控制端口);
(6)Dma(传输控制)。
2.2.3 用户自定义外设设计
系统设计自定义模块是Avalon流模式采集输入控制器。该控制器设计符合Avalon总线规范,功能是将采集的数据完整送入SDRAM以便存储以及方便数据处理。系统CPU速率为50 MHz,而采样速率不定,因此需要FIFO实现前后传输的连贯性。然后经过DMA传输通道将数据存入SDRAM。Avalon流模式采集输入控制器硬件结构,控制器模块分为采集模块和HFO传输模块两部分。采集模块实现数据的采集,其输入接口有:write_clk(写时钟)、write_en(写使能)与sample_data(16位数据总线)。挂在Avalon总线上的接口有FIFO Q[15:0](数据输出总线)、chipselect(片选信号)、read_req(读请求信号)、address(Avalon总线地址)read_empty(读空信号)、read_clk(读时钟)。