ChipScope 使用问题和解决方案

news2024/11/28 18:53:05

背景介绍

我最近在学习FPGA开发技术,用杜勇老师的《Xinlinx FPGA数字信号处理设计》一书,按照书中的例子,对 CXD301 开发板进行ADC、DAC示例的调试,使用 ChipScope 软件进行在线逻辑分析。遇到了下面的问题,并给出了解决办法。

问题1:项目不能放在虚拟机外部

项目不能放在虚拟机外部,否则执行 Xilinx 的 chipscope 综合时,会报告错误,看具体原因是无法执行 mkdir 命令!导致mkdir失败的具体原因不明,可能和无法正常访问VirtualBox的共享目录有关。

可以从日志文件E:\projects\dsp_fpga\02_AD_DA\_ngo\cs_icon_pro\coregen.log中看到失败原因。

INFO:encore:314 - Created non-GUI application for batch mode execution.
Wrote CGP file for project 'coregen'.
INFO:sim:172 - Generating IP...
Resolving generic values...
Finished resolving generic values.
Generating IP...
Gathering HDL files for icon_pro root...
Creating XST project for icon_pro...
Creating XST script file for icon_pro...
Creating XST instantiation file for icon_pro...
Running XST for icon_pro...
XST: HDL Parsing
WARNING:coreutil - XST failed for icon_pro. ERROR:HDLCompiler:1091 - "Unknown"
   Line 0: Save failed due to mkdir failure
   ERROR:HDLCompiler:1091 - "Unknown" Line 0: Save failed due to mkdir failure
   ERROR:HDLCompiler:1091 - "Unknown" Line 0: Save failed due to mkdir failure
   ERROR:HDLCompiler:1091 - "Unknown" Line 0: Save failed due to mkdir failure

       invoked from within
   "runXST $ComponentName GenerationOptions $TopLevel"
       (procedure "deliverXSTNetlist" line 15)
       invoked from within
   "deliverXSTNetlist $ComponentName {} "root" $BaseIP "
       (procedure "components::icon_pro::generate" line 31)
       invoked from within
   "components::${ComponentName}::generate 1"
       (procedure "::xilinx::sim::generation::generatePsfCore" line 59)
       invoked from within
   "::xilinx::sim::generation::generatePsfCore {chipscope_icon_v1_06_a}
   {icon_pro} {ALL}"ERROR:sim - XST failed for icon_pro. ERROR:HDLCompiler:1091 - "Unknown" Line 0:
   Save failed due to mkdir failure

ERROR:sim - Error found during generation.
ERROR:sim - Failed to generate 'icon_pro'.  XST failed for icon_pro.
   ERROR:HDLCompiler:1091 - "Unknown" Line 0: Save failed due to mkdir failure

ERROR:sim:877 - Error found during execution of IP 'ICON (ChipScope Pro -
   Integrated Controller) v1.06.a'

解决方案:将项目目录从外部的共享目录下,整个拷贝到虚拟机本机磁盘上,重新打开项目进行综合即可。

问题2:不会配置"网络连接"(Net Connections)导致实现(Implement)失败

《Xinlinx FPGA数字信号处理设计》一书中没有详细说明如何将“通道(Channel)”与"网络(Net)"相连。如果将通道直接和"线(wire)"相连,则会出现警告,并且后续的实现过程会失败。

解决方案:
Channel 必须和寄存器、BUF相连才可以。下面的连接方式才能成功。
Net Connections
不能直接将 CH0 和 clk 信号相连。原因如下:
在配置 Chipscope 的时候,通常需要将各个模块的信号连接到 Chipscope 的输入端口,以便进行调试和分析。在连接的时候,需要将信号通过一个寄存器来缓冲,然后再将缓冲后的信号连接到 Chipscope 的输入端口。

这是因为 FPGA 中的信号具有时序特性,而 Chipscope 是一个异步的调试工具,它的输入端口也需要满足时序要求。如果将 channel 直接连接到 wire 端口,可能会存在时序不稳定的问题,导致 Chipscope 无法正确地读取信号。

因此,为了保证信号的时序稳定性,连接到 Chipscope 输入端口的信号通常需要通过寄存器进行缓冲。这样可以确保信号的时序满足要求,同时还可以避免信号冲突和干扰,提高调试的准确性和可靠性。

书中 ADC_DAC 示例程序的 ChipScope Net Connection 配置如下所示。
在这里插入图片描述
我是如何找到这些 Net 的呢?是看 RTL 电路图发现的,verilog 模块中的信号命并不一定在 Net 中都有,而且要找到信号连接的BUF模块的端口,用他们分配给ChipScope的Channel才可以。

ChipScope 中 Data same as Trigger 选项的作用

Data As Trigger

在 Chipscope 工具的 Parameters 选项卡下,有一个 Data same as Trigger 选项,它是一种触发器设置模式,它可以让用户选择在何时触发信号捕获和采样,以便进行调试和分析。也是将 Trigger Ports 作为 Data Ports 的意思。

在 Data as Trigger 模式下,用户可以选择一个数据信号作为触发器,当该信号发生特定的条件时,Chipscope 将自动触发信号的捕获和采样。例如,用户可以选择一个特定的数据值、一个数据范围、或者一个特定的时钟周期作为触发条件,这样当触发条件满足时,Chipscope 将自动捕获和采样信号。

Data as Trigger 的主要作用是帮助用户在复杂的电路中快速定位和分析问题,通过触发器的设置,可以精确定位信号的采样位置,从而更快地找到问题所在,加快调试和分析的速度。同时,Data as Trigger 也可以避免由于信号的随机性和不可预测性导致的调试困难,提高调试的准确性和可靠性。

配置 Channel 和 Net 的小技巧

批量对应法:
在这里插入图片描述

用 ChipScope 显示捕获到的信号波形

在这里插入图片描述

附上 AD_DA verilog 程序

module ad_da(
    input clk,
    input rst,
    output ad_clk,
    input [7:0] ad_din,
    output da1_clk,
    output [7:0] da1_out,
    output da2_clk,
    output reg [7:0] da2_out
    );

// 准备一个25MHz的时钟信号
reg clk25m;
always@(posedge clk)
    clk25m<=!clk25m;

// 8位计数器,不断累加,得到频率为 50M/256 = ?Hz 的三角波
reg [7:0] cn;   
always@(posedge clk)
    if(rst)
        cn<=0;
    else
        cn<=cn+1;
// 输出到da1,dac1 会转换为模拟信号,然后馈送到 adc 芯片,于是 ad_in 会有信号
assign da1_out = cn;

assign ad_clk = clk25m;
assign da1_clk = clk25m;
assign da2_clk = clk25m;


reg signed [7:0] data;  // 存放数据的寄存器
// 将 AD 得到的无符号数据转换有符号数据,供 FFT 等信号处理模块使用
always@(posedge clk25m)
    data <= ad_din - 128;

// 将有符号数转换为无符号数
always@(posedge clk25m)
    if(data[7])
        da2_out <= data-128;    // 不理解,不应该总是+128吗?不是的,因为负数是以补码形式存储,所以需要分正负处理。当是负数时,补码的二进制
        // 形式去掉符号位后,刚好是原值的‘补数’,所以 -128刚好对应0,也就是 1000_0000 将符号位1变为0后,就是负数的补数,正好是从小到大的排列形式,
        // 正好可以对应[0,127]
    else
        da2_out <= data+128;
endmodule

如何用 modelsim 仿真带有回环的模块?

也就是像实物板卡那样,将 da 输出信号再连接到 adc 输入信号端口,进行功能仿真。
目前没有实验成功。

补充知识

如何将 8bit 的有符号数变为(准确讲是映射为)无符号数,也就是将 [-128, 127] 范围的 int8 整数转为 [0, 255] 范围的 uint8 整数。
方法是:

a  = 带符号 int8
ua = 无符号 int8

if(a<0) {
   ua = a - 128;
} else {
   ua = a + 128;
}

因为 -128 的补码形式是 “1000 0000”,如果 a = -128 那么 a 的二进制补码(也就是硬件中存储的二进制数)是 “1000 0000”,
那么 -128 + (-128) = “1000 0000” + “1000 0000” = “0000 0000”,刚好就映射到 0 了。

总结规律就是:负数的MSB(最高位)变为0;正数的MSB变为1,就可以将带符号int 映射 为无符号整数了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/512754.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【软考数据库】第十章 系统开发与运行

目录 10.1 系统实施 10.1.1 信息系统生命周期 10.1.2 能力成熟度模型 10.1.3 软件过程开发模型 10.1.4 信息系统开发方法 10.1.5 系统分析与设计 10.1.6 结构化开发 10.2 系统测试 10.2.1 测试原则和方法 10.2.2 测试阶段 10.2.3 测试用例设计 10.2.4 调试 10.2.…

现代化个人博客系统 ModStartBlog v7.3.0 首页热门博客,UI优化调整

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用&#xff0c;支持后台一键快速安装&#xff0c;让开发者能快的实现业务功能开发。 系统完全开源&#xff0c;基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场&#xff0c;后台一键快速安装 …

GETOPT函数详解

一、目的 相信第一次接触linux的小伙伴在使用命令行时肯定有这样的疑惑&#xff0c;命令行各种各样的选项和选项参数是怎样实现的&#xff08;各个命令的选项的含义可以通过man手册查看&#xff09;。 二、介绍 在正式介绍之前&#xff0c;我们先来看一下命令行选项的使用&…

数据库原理+openGauss

文章目录 0. 准备工作0.1 实验环境0.2 主要内容0.3 学习资源 1. 安装部署实验&#xff08;实验一&#xff09;1.1 下载VirtualBox1.2 安装VirtualBox1.3 镜像文件导入1.4 启动虚拟机1.5 数据库使用1.6 数据库基本操作 2 表&模式&#xff08;实验二&#xff09;2.1 创建模式…

jmeter如何测试一个post请求(发送json请求报文)

目录 1.配置测试计划1.1.创建POST的HTTP请求取样器&#xff08;模拟POST请求&#xff09;1.2.创建HTTP信息头管理器 2.执行压测并查看结果 jmeter如何测试一个发送json报文的post请求. 更详细的配置请参考另外一篇博文&#xff1a; jmeter如何测试一个get请求 1.配置测试计划 …

独立站运营必做的6项工作内容

独立站的运营工作内容比较繁琐和全面&#xff0c;主要包括以下几个方面&#xff1a; 一、网站策划和设计 定义网站目标和定位制定网站规划和设计方案确定网站主题、颜色和页面布局确定网站的核心功能和用户体验设计网站的Logo和其他品牌元素 二、网站建设和维护 选择网站主…

React基础入门【一】

官方文档&#xff1a;https://react.docschina.org/ 说明 本文总结自尚硅谷课程。学习本教程之前&#xff0c;最好具备vue的基础知识&#xff0c;明白虚拟DOM、jsx这些前置知识。接下来&#xff0c;我们通过一个简单的示例来展示react的使用。 注意&#xff1a;入门的学习不…

【Atlas 200】华为昇腾Atlas 200加速模块RC场景无法启动卡在Start to jump Linux kernel

问题现象 RC场景下&#xff0c;装有华为昇腾Atlas 200加速模块的开发板无法启动系统。 将制作好系统的SD卡插入开发板&#xff0c;0号串口输出的日志卡在Start to jump Linux kernel&#xff0c;之后没有更多输出。 可能原因 一种比较大的可能是——在制作系统时&#xff0c…

Mac终端代理

1.打开代理查看代理端口号 打开设置&#xff0c;点击网络&#xff0c;点击详细信息&#xff0c;点击代理查看代理端口号。 2.修改环境变量 1&#xff09;终端输入下面命令 vim .zshrc 2&#xff09;在.zshrc文件里添加下面两段内容&#xff08;注意&#xff1a;7980为端口号…

力扣206反转链表:代码实现+图文全解+方法总结(四种方法)

文章目录 第一部分&#xff1a;题目描述第二部分&#xff1a;题解2.1 方法一&#xff1a;生成新节点到新链表2.2 方法二&#xff1a;复用旧节点到新链表&#x1f340; 面向过程式思想方法&#x1f340; 面向对象式思想方法 2.3 方法三&#xff1a;递归2.4 旧链表中移动旧节点 第…

02:MYSQL---DML

目录 1:介绍 2:DML数据操作 1:介绍 DML英文全称是Data Manipulation Lanquage(数据操作语言)&#xff0c;用来对数据库中表的数据记录进行增删改操作。 添加数据 :insert 修改数据:update 删除数据:delete 2:DML数据操作 给指定字段添加数据 insert into 表名(字段名1,…

segment-anything本地部署使用

前言 Segment Anything Model&#xff08;SAM&#xff09;是一种先进的图像分割模型&#xff0c;它基于Facebook AI在2020年发布的Foundation Model3&#xff0c;能够根据简单的输入提示&#xff08;如点或框&#xff09;准确地分割图像中的任何对象&#xff0c;并且无需额外训…

将项目导入到github全过程

新建仓库 完善仓库信息 然后点击创建仓库 复制仓库地址 将文件上传到git上 我这里要上传IMProject文件夹&#xff0c;所以就在这个文件夹内部&#xff0c;右键鼠标&#xff0c;然后点击git bash here 输入git init &#xff0c;然后文件夹里面就会多一个.git文件 输入gi…

【IoT】ChatGPT 与 AI 硬件

随着AI的发展&#xff0c;比如最近炒得很火的ChatGPT&#xff0c;还在持续快速迭代更新。 当然了&#xff0c;对于软件和算法&#xff0c;如果你想&#xff0c;每天迭代 10 个版本都可以。 包括科大讯飞的星火认知大模型最近也刚发布。 这就引出了未来一个更大的发展方向&am…

PMP课堂模拟题目及解析(第7期)

61. 为限制项目变更的数量&#xff0c;项目经理制定了严格的变更管理计划&#xff0c;只允许批准减轻重大潜在或实际风险的变更&#xff0c;一位团队成员提出了一个范围变更&#xff0c;该变更将消除对一个落后于进度计划的外部项目的依赖关系。项目经理应该怎么做&#xff1f…

AI绘图实战(九):给热门歌曲做配图 | Stable Diffusion成为设计师生产力工具

S&#xff1a;AI能取代设计师么&#xff1f; I &#xff1a;至少在设计行业&#xff0c;目前AI扮演的主要角色还是超级工具&#xff0c;要顶替&#xff1f;除非甲方对设计效果无所畏惧~~ 预先学习&#xff1a; 安装及其问题解决参考&#xff1a;《Windows安装Stable Diffusion …

迎接新时代挑战:项目管理中的创新与发展

你想知道如何在你的 PM 角色中保持最新状态吗&#xff1f; 您所在的行业是否发展如此之快&#xff0c;以至于有一天您可能不再需要您&#xff1f; 随着人工智能、敏捷和授权团队的兴起&#xff0c;项目经理还需要吗&#xff1f;也许吧&#xff0c;但不是出于您可能期望的原因。…

@vant/weapp

文章目录 一、介绍二、安装1. cd 到项目文件目录2. 使用 npm 安装3. 修改项目配置4. 构建5. 其他文件 三、使用四、【参考】 微信小程序使用vant/weapp组件 一、介绍 Vant 是一个开源的移动端组件库&#xff0c;在微信小程序开发中可以使用该UI库提提供的组件。 使用这个三方…

用户分享 | Dockquery,一个国产数据库客户端的初体验

DockQuery 有话说 DockQuery &#xff0c;「天狼」也&#xff0c;中原本土狼种。天狼年纪很小&#xff0c;不满一岁&#xff0c;但它有一个伟大的梦想——建造一座能容纳中原群狼的宫殿&#xff01;它不想再被异域狼欺负&#xff0c;不想被异域狼群挤占生存空间&#xff0c;它…

点到直线距离估计线性回归参数

点到直线距离估计线性回归参数 文章目录 点到直线距离估计线性回归参数[toc]1 推导2 模拟 1 推导 普通最小二乘法(OLS)估计线性回归方程的参数要求残差平方和最小&#xff0c;通过优化方法计算出各参数的估计量。其中残差 e i y i − β 0 − β 1 x i e_iy_i-\beta_0-\beta…