当前位置: 首页 > ai >正文

DSP48E2 的 MAC模式功能仿真


DSP48E2 仿真代码:
测试的功能为 P i = ( A + D ) ∗ B + P i − 1 P_{i} = (A+D) * B + P_{i-1} Pi=(A+D)B+Pi1

`timescale 1ns / 1nsmodule dsp_tb;// 输入reg CLK;reg CE;reg SCLR;reg signed [26:0] A, D;reg signed [17:0]  B;// 输出wire signed [47:0] P;parameter period = 5; // 100MHzparameter num_test = 104;// 测试轮数always #period CLK=!CLK;// DSP 初始化initial beginCLK = 0;CE = 0;SCLR = 1;A = 0;B = 0;D = 0;#(period*2);CE = 1;SCLR = 0;end// 测试激励生成integer i=0;always #10 begin//A = (1 << 26) - 1;//D = 0;//B = (1 << 16) - 1;A = $random % (1 << 18);D = $random % (1 << 8);B = $random % (1 << 8);if(i==num_test+1)begin#period $stop;end else begini=i+1;endend        reg signed [26:0] A_4r, D_4r, A_3r, D_3r, A_2r, D_2r, A_r, D_r;reg signed [17:0] B_r, B_2r, B_3r, B_4r; integer num_correct=0, num_error=0; // 记录正确个数和错误个数wire signed [47:0] P_ref;reg signed [47:0] P_ref_r;wire result;       // 参考结果生成assign P_ref=(i<4)?0: (A_4r + D_4r)* B_4r + P_ref_r;assign result=(P_ref!=P);// 打印测试logalways@(posedge CLK)if(SCLR)begin{A_4r,D_4r, B_4r, A_3r,D_3r, B_3r, A_2r,D_2r, B_2r, A_r,D_r, B_r}<=0;P_ref_r <= 0;num_correct <= 0;num_error   <= 0;end elsebegin// 打拍同步延迟{A_4r,D_4r,B_4r}<={A_3r, D_3r, B_3r};{A_3r,D_3r,B_3r}<={A_2r, D_2r, B_2r};{A_2r, D_2r, B_2r}<={A_r, D_r, B_r};{A_r, D_r, B_r}<={A, D, B}; P_ref_r <= P_ref;// 结果比对和打印if(i>=5 && i<=num_test)begin // 前四个输出P和P_ref的时序未同步,故不算$write("[%d]: (%d + %d)* %d + %d = %d, P_ref:%d, ",i-5,A_4r, D_4r, B_4r, P_ref_r, P, P_ref);if(result==1'b0)begin$display("Pass :)");num_correct <= num_correct + 1;end else begin$display("Fail :(");num_error <= num_error + 1;endend else begin$display("Accuracy:%d/%d=%d%%", num_correct,num_test-4,num_correct*100/(num_test-4));endend// 实例化待测模块dsp_macro_0 uut(.CLK(CLK),.CE(CE),.SCLR(SCLR),.A(A),.B(B),.D(D),.P(P));   endmodule
http://www.xdnf.cn/news/2525.html

相关文章:

  • C#与SVN的深度集成:实现版本控制自动化管理​
  • 【星海出品】K8S调度器leader
  • 如何验证二叉搜索树(BST):Java实现详解
  • C++ 可调用实体 (详解 一站式)
  • 我的HTTP和HTTPS
  • Mariadb 防火墙服务器和端口:mysql | 3306
  • 如何实现Kafka的Exactly-Once语义?
  • 关于kafka
  • 突破JVM边界:类加载三重门与栈帧的生存法则
  • 如何搭建spark yarn 模式的集群集群。
  • 如何在idea中写spark程序
  • Excel处理控件Aspose.Cells for Go :通过 C++ 实现的设计概念和 API 架构讲解
  • 深入浅出限流算法(三):追求极致精确的滑动日志
  • threejs学习002-场景中添加几何体
  • Kubernetes》》k8s》》explain查 yaml 参数
  • OpenCV 图形API(67)图像与通道拼接函数-----水平拼接(横向连接)两个输入矩阵(GMat 类型)函数concatHor()
  • STM32 HAL库实现USB虚拟串口
  • 蓝桥杯算法实战分享
  • Lua 第13部分 位和字节
  • 《Science》观点解读:AI无法创造真正的智能体(AI Agent)
  • Python中的Walrus运算符分析
  • HikariCP 6.3.0 完整配置与 Keepalive 优化指南
  • 1.1 道路结构特征
  • 【博通芯片方案】调试指令详解版一(无线)
  • Docker容器跑定时任务脚本
  • 分布式一致性算法起源思考与应用
  • 4.2.2 MySQL索引原理以及SQL优化
  • Bolt.diy 一键部署,“一句话”实现全栈开发
  • GAMES202-高质量实时渲染(homework1)
  • 【Redis】初识Redis