ChipScope 使用问题和解决方案

这篇具有很好参考价值的文章主要介绍了ChipScope 使用问题和解决方案。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景介绍

我最近在学习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相连才可以。下面的连接方式才能成功。
ChipScope 使用问题和解决方案,FPGA,fpga开发,chipscope,逻辑分析仪
不能直接将 CH0 和 clk 信号相连。原因如下:
在配置 Chipscope 的时候,通常需要将各个模块的信号连接到 Chipscope 的输入端口,以便进行调试和分析。在连接的时候,需要将信号通过一个寄存器来缓冲,然后再将缓冲后的信号连接到 Chipscope 的输入端口。

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

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

书中 ADC_DAC 示例程序的 ChipScope Net Connection 配置如下所示。
ChipScope 使用问题和解决方案,FPGA,fpga开发,chipscope,逻辑分析仪
我是如何找到这些 Net 的呢?是看 RTL 电路图发现的,verilog 模块中的信号命并不一定在 Net 中都有,而且要找到信号连接的BUF模块的端口,用他们分配给ChipScope的Channel才可以。

ChipScope 中 Data same as Trigger 选项的作用

ChipScope 使用问题和解决方案,FPGA,fpga开发,chipscope,逻辑分析仪

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

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

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

配置 Channel 和 Net 的小技巧

批量对应法:
ChipScope 使用问题和解决方案,FPGA,fpga开发,chipscope,逻辑分析仪

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

ChipScope 使用问题和解决方案,FPGA,fpga开发,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 映射 为无符号整数了。文章来源地址https://www.toymoban.com/news/detail-701606.html

到了这里,关于ChipScope 使用问题和解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA高端项目:FPGA实现SDI视频编解码工程解决方案,提供3套工程源码和技术支持

    FPGA高端项目:FPGA实现SDI视频编解码工程解决方案,提供3套工程源码和技术支持 目前FPGA实现SDI视频编解码有两种方案:一是使用专用编解码芯片,比如典型的接收器GS2971,发送器GS2972,优点是简单,比如GS2971接收器直接将SDI解码为并行的YCrCb422,GS2972发送器直接将并行的YC

    2024年02月21日
    浏览(45)
  • RK3588+FPGA视频实时处理与双屏显示、存储解决方案

    主板平台的主要功能电路示意图 在ARM端: 脚踏开关是电平输入10 口,双路。 触摸面板与主板的连接方式为 UART 外加12V 电源。 键盘为自开发产品,通过USB透传 UART,并传递12V电源USB、千兆网络为主板上的接口,USB 为3.0版本host 接口 SSD 为内置硬盘。 图像输出视频接口主要包含

    2024年02月16日
    浏览(57)
  • “FPGA开发中Vivado生成bit文件遇到的错误解决方案“

    “FPGA开发中Vivado生成bit文件遇到的错误解决方案” FPGA开发是现在工业界中越来越广泛使用的技术,但是在开发过程中难免会出现一些问题。其中,Vivado生成bit文件报错是一个比较常见的问题。下面,我将详细介绍这个问题以及如何彻底解决。 一、问题描述 当我们进行FPGA项

    2024年02月04日
    浏览(60)
  • FPGA高端项目:紫光同创系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持

    FPGA高端项目:紫光同创系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持 “苟利国家生死以,岂因祸福避趋之!”大洋彼岸的我优秀地下档员,敏锐地洞察到祖国的短板在于高精尖半导体的制造领域,于是本着为中华民族伟大复兴的中国梦贡献绵薄之力的初

    2024年01月18日
    浏览(46)
  • [Vivado下载bit文件后不能在线捕获FPGA波形] - 解决方案详解

    [Vivado下载bit文件后不能在线捕获FPGA波形] - 解决方案详解 对于使用 FPGA 进行开发的工程师来说,Vivado 下载 bit 文件并在线捕获波形是一项非常基本的技能。然而,有时在下载 bit 文件之后,我们却无法在线捕获波形。这个问题可能会导致我们无法深入调试硬件问题。本文将详

    2024年02月04日
    浏览(39)
  • FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持

    FPGA高端项目:Xilinx Zynq7020 系列FPGA纯verilog图像缩放工程解决方案 提供3套工程源码和技术支持 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像缩放方案如下: 1:Xilinx的HLS方案,该方案简单,易于实现

    2024年01月23日
    浏览(51)
  • FPGA高端项目:Xilinx Kintex7 系列FPGA纯verilog图像缩放工程解决方案 提供4套工程源码和技术支持

    FPGA高端项目:Xilinx Kintex7 系列FPGA纯verilog图像缩放工程解决方案 提供4套工程源码和技术支持 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像缩放方案如下: 1:Xilinx的HLS方案,该方案简单,易于实现

    2024年01月17日
    浏览(41)
  • FPGA高端项目:Xilinx Artix7 系列FPGA纯verilog图像缩放工程解决方案 提供4套工程源码和技术支持

    FPGA高端项目:Xilinx Artix7 系列FPGA纯verilog图像缩放工程解决方案 提供4套工程源码和技术支持 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。目前市面上主流的FPGA图像缩放方案如下: 1:Xilinx的HLS方案,该方案简单,易于实现,

    2024年01月20日
    浏览(49)
  • RK3588+FPGA+AD+AI的智能数据采集与分析解决方案

    RK3588是瑞芯微新一代旗舰级高端处理器,具有高算力、低功耗、超强多媒体、丰富数据接口等特点。搭载四核A76+四核A55的八核CPU和ARM G610MP4 GPU,内置6.0TOPs算力的NPU。 RK3588+复旦微FPGA方案 有五大技术优势 1. 内置多种功能强大的嵌入式硬件引擎,支持8K@60fps 的 H.265 和 VP9 解码器

    2024年03月26日
    浏览(58)
  • 飞腾+FPGA+AI电力行业智能数据采集与分析网闸解决方案

          安全物联网闸在监控平台中的具体作用:35KV变电站是煤矿的动力核心,采矿人员上下井、煤炭提升输送、矿井通风等核心设备均依靠变电站提供电源。监控中心及时掌握变电站的运行状态对煤矿的安全生产非常重要。如若外部通过监控网络来控制变电站会造成严重的

    2024年03月26日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包