|
MP模组的定制、硬件综合/模拟 定制MP模组的第一步是开发专用硬件模组和相关的软件驱动程式。大多数情况下,使用Verilog RTL对硬件块进行编码,而软件则使用C、C++ 或 ARM组合语言。至于执行硬件和软体库模组的演算法,我们将在下一段中描述其流程。
将专用功能整合进MP模组是靠功能块的预留位置实例(placeholder instantiations)来完成的,这些功能块已写进爱特梅尔公司提供的MP模组RTL代码的范本中。其中一些模组已预先对DMA或者週边设备数据控制(Peripheral Data Controller,PDC)连通性(connectivity)进行了程式设计。下图2是带有PDC连通性的APB连接功能的例子。
//////////////////////////////////////////////////////////////////////////// // mpapb0: // PORTS: // psel_mpapb0 (APB select) // mpapb0_config_clock (APB configuration clock) // pwrite (APB write) // paddr (APB address - 14 bits) // pwdata (APB write data bus) // mpapb0_channel_rx_end (from PDC - rx buffer full) // mpapb0_channel_tx_end (from PDC - tx buffer full) // mpapb0_rx_buffer_full (from PDC - both rx buffers full) // mpapb0_tx_buffer_empty (from PDC - both rx buffers full) // prdata (APB read data bus) // mpapb0_size (to PDC - rx/tx transfer size) // mpapb0_rx_rdy (to PDC - rx ready) // mpapb0_tx_rdy (to PDC - tx ready) // mpirq0 (Interrupt to AIC) // // Replace empty module with user-defined logic // APB0 apb_pdc_empty i_apb0 ( //-- INPUTS .nreset(nreset_r_apb), .pclock(mp_pclocks[0]), .config_clock(mpapb0_config_clock), .psel(psel_mpapb0), .pwrite(pwrite), .paddr(paddr), .pwdata(pwdata), .rx_end(mpapb0_channel_rx_end), .tx_end(mpapb0_channel_tx_end), .rx_buffer_full(mpapb0_rx_buffer_full), .tx_buffer_empty(mpapb0_tx_buffer_empty), //-- OUTPUTS .prdata(p_d_from_mpapb0), .rx_size(mpapb0_size), .tx_size(), .rx_rdy(mpapb0_rx_rdy), .tx_rdy(mpapb0_tx_rdy), .apb_irq(mpirq0) );
图2:MP模组中APB连接功能预留位置实例的 RTL代码
在整合MP模组内各项功能的RTL代码时,应验证该代码与CAP架构的相容性,然后再使用爱特梅尔提供的制程目标库(process specific target libraries)来综合RTL代码,并在整个元件上完成功能模拟。
■专用软件和作业系统的整合
在硬件整合的同时,客户会开发和整合与硬件相应的软件套件。如图3所示,爱特梅尔为微控制器的固定部分、以及源自客户或协力厂商设计机构的MP模组,提供低层元件驱动程式。这些程式将与程式设计MCU和周边设备/介面的应用模组互相整合。如果需要作业系统,可从合格的协力厂商取得移植好的版本,并整合在软件套件中。
图3:CAP软件结构
然后,使用业界标准的开发工具来测试软件套件。如果有可用的工具,这个阶段更可以进行软/硬件的共同模拟。
■基于FPGA Emulation Board模拟板上的Emulation
图4:CAP模拟板架构
设计流程中的一个关键步骤是在CAP模拟板上进行硬件和至少是低层软件的模拟。如图4所示,CAP模拟板包括整套的存储器、标准介面与网路连接,以及可以针对应用要求进行配置的额外连接,尤其是:
.CAP元件的固定部分以单晶片的形式实现,并且在MP模组上配有FPGA介面。 .高密度FPGA用以模拟带有嵌入式存储器和外部I/O的MP模组。 .FPGA配置存储器用来储存MP模组编译好的HDL代码。 .外部汇流排介面(EBI)和来自FPGA的外部输入/输出被连接至扩展板上的各种存储器:SDRAM、移动DDRAM、猝发手机RAM(Burst Cellular RAM)、NOR快闪存储器、NAND快闪记忆体等。这些储存器用来载入软件以及应用程式的数据。 .所有标准介面(CAN、USB、乙太网路、I2S、AC97、ADC、MCI等等)通过收发器/PHY/转码器(codec)与外部连接,实现了对外部介面以及元件联网/通信连接的全面测试/调试。 .图像用户介面(GUI)的所有元素均与板上的元件或介面连接,包括LCD、键盘、触控式萤幕介面等,这样就可以对 GUI的基本元素进行板上测试。 .提供外部并行I/O(PIO)和FPGA输入/输出,用于与专用外部设备的连接,以及非标准介面的实现。 .串列调试I/O与运行一组工业标准应用程式开发/调试工具的个人电脑互相连接。
这个CAP/FPGA组合以接近于元件最终的工作频率运行,可以实现元件的实际工作速度测试,包括MCU、标准介面、MP模组所实现的功能,以及到当前为止开发的所有软件──至少包括了元件的驱动程式、作业系统移植及控制MP模组功能的应用代码模组。开发人员无须付出任何成本,就可以对硬件或者软件元素进行修正。
经验告诉我们,这一模拟步骤几乎总能指出在硬体和/或软件;或者元件的硬件和软件介面中的错误。在该阶段便能够纠正和重新测试元件的整个设计,是缩短设计阶段、降低设计成本,以及提高软/硬件首次成功率的一个主要因素。另一个优点是:最终设计的模拟版本可以用作未来设计的起始点,从而大大节省设计工作量。 |