硬件加速器相关设计Sobel边缘检测工作.ppt
文本预览下载声明
* 加速器设计总结 * * 加速器的验证 为了完成这个验证过程,必须构建一个测试平台,该平台 可以模拟带有加速器的嵌入式系统的行为。若我们有一个 已验证的嵌入式处理器模型,则可以把它加到测试平台 中,编写小的测试程序在它上面运行。测试程序把参数写 入加速器中的寄存器,对其进行设置并启动操作。另一方 面,若不能获得处理器模型,则必须编写处理器总线的功 能模型,即能执行预先确定的总线操作时序,但不实际执 行任何处理器指令的模型。我们的测试平台也需要有存储 器和总线仲裁器的模型。这个存储器模型,像处理器模型 一样,没有必要具有全部的功能,而只要具有总线的读写 操作功能即可,只要能按照预先确定的规则产生读取的数 据,可以不考虑数据的写入。这些简化使得我们可以把精 力集中在加速器的验证上,以可控的方式建立测试案例。 * 加速器的验证 例14 : 开发一个可对 Sobel 加速器进行验证的测试平 台,该平台包含一个具有总线功能的处理器模 型。该处理器模型能通过程序命令加速器对一 幅存储在地址的原始图像进行计算, 并把计算生成的图像像素的导数值存入地址为的内存中。该处理器模型必须每10μs 读一次状态寄存器,直到done 标志位(完成标 志位)被设置为止。该测试平台还必须包括能 赋予加速器优先权的总线仲裁器,以及具有总线 功能的存储器,该存储器对读操作返回0,并抛 弃写入的数据。 * 加速器的验证 解决方案: 该测试平台的构建可参照如图2所示 的系统模 型。 加速器是待验证的设计,仲裁器和具有总 线功能的处理器还有存储器组成了测试平台的 剩余部分。我们还加入了时钟和复位信号发 生器。测试平台模块定义的要点如下: * 加速器的验证 `timescale 1ns/1ns module testbench; parameter t_c = 10; parameter [22:0] mem_base = 23’h000000; parameter [22:0] sobel_reg_base = 23’h400000; parameter sobel_int_reg_offset = 0; parameter sobel_start_reg_offset = 4; parameter sobel_O_base_reg_offsetp = 8; parameter sobel_D_base_reg_offsetp = 12; parameter sobel_status_reg_offsetp = 0; * 加速器的验证 reg clk, rst; wire bus_cyc, bus_stb, bus_we; wire [3:0] bus_sel; wire [22:0] bus_adr; wire bus_ack; wire [31:0] bus_dat; wire int_req; wire sobel_cyc_o, sobel_stb_o, sobel_we_o; wire [21:0] sobel_adr_o; wire sobel_ack_i; wire sobel_stb_i; wire sobel_ack_o; wire [31:0] sobel_dat_o; ……. * 加速器的验证 always begin // 时钟发生器 clk = 1’b1; #(t_c/2); clk = 1’b0; #(t_c/2); end initial begin // 复位发生器 rst = 1’b1; #(2.5*t_c) rst = 1’b0; end sobel duv ( .clk_i(clk), .rst_i(rst), .cyc_o(sobel_cyc_o), .stb_o(sobel_stb_o), .we_o (sobel_we_o), .adr_o(sobel_adr_o), .ack_i(sobel_ack_i), .cyc_i(bus_cyc), .stb_i(sobel_stb_i), .we_i(bus_we), .adr_i(bus
显示全部