FPGA-基于chipscope的超声波测距调试

简介: FPGA-基于chipscope的超声波测距调试

调整chipscope数据顺序:(引荐博文)

https://blog.csdn.net/rill_zhen/article/details/8115756

引言


索性再破例一下,成个系列也行。

内容组织

1.建立工程

2.插入及配置核

2.1运行Synthesize

2.2新建cdc文件

2.3 ILA核的配置

3. Implement and generate programming file

4.利用Analyzer观察信号波形

4.1连接器件

4.2下载配置fpga 

4.3载入信号端口名

4.4设置触发信号

4.5运行并观察信号波形

补充

1. 建立工程


ChipScope是配合Xilinx Ise使用的片内逻辑分析工具,使用的第一步是建立ise工程文件,详细步骤可参考ise使用说明。如果已有建好的ise工程,可跳过此步骤,打开已有工程即可。

建立工程时注意正确添加.v源文件和.ucf管脚配置文件。image.png

image.png

2.2 新建cdc文件


         右键单击sources栏中顶层源文件,点击new source,选择chipscope definition and connection file,设好文件名及文件路径,勾选add to project,然后一直点next完成建立。

image.png

image.png

2.3 核的配置


         双击sources栏中的刚刚建立的cdc文件,启动core inserter。点击两次next,进入ILA的设置界面,首先是trigger parameters界面。

         弹出netlist changed的提示框,点选ok刷新网表。通过number of input trigger ports可设置要观察波形的组数,通过trigger width可设置每组观察的信号的数目。

image.png

点击next进入capture parameters界面。通过data depth可设置信号采集的时钟周期数,采集数目越多,观察信号的时间越长。

image.png

点击next进入net connections界面。可以看到net connections端口列表显示红色字体,表示端口没有完全连接;当全部端口都与具体信号连接时,字体变为黑色。

             双击clock ports打开select net对话框。首先连接时钟信号,在右边net selections框中点clock signals,选择时钟的信道CH0,在左下方的信号列表中找到时钟信号,单击选中,然后单击右下方make connections按钮,完成clk信号的连接。

image.png

在右边net selections框中点trigger/data signals,用同样的方法连接所有想要观察的信号。如果之前设置观察多组信号,可点击右下方TP0/TP1切换信号组。连接完成后点击下方OK退出select net对话框,然后点击return to project navigator退出core inserter,并保存设置。

image.png

3. Implement和Generate Programming File

       单击选中sources框中顶层源文件,运行processes框中的Implement。注意,如果Implement过程中报错端口连接不完全,应返回ILA配置检查端口是否全部连接。

       右键单击Generate Programming File,点击properties,在startup options中将start-up clock设为JTAG clock,点击ok。

       运行Generate Programming File,生成.bit文件。

image.png

4. 利用Analyzer观察信号波形

       运行process框中的analyze design using chipscope,进入chipscope pro analyzer。

4.1 连接器件


       单击左上角file下面的图标,连接到器件,弹出对话框选ok。

image.png

4.2 下载配置fpga


       右键点击my device1(即fpga芯片),单击configure,弹出对话框,点select new file,选择之前生成的.bit文件,点击ok,之后程序将把design下载到fpga。

image.png

4.3 载入信号端口名


       单击file->import,点击select new file选中cdc文件,然后点击ok。此时可以看到端口列表中的端口名称都变成了对应的信号名称。

image.png

4.4 设置触发信号


      双击trigger setup打开触发信号设置框,在value栏中可设置开始信号采集的触发信号值,其中每一位对应一个端口,按照端口顺序排列。例如图中设置为端口0(cle)为1,并且端口7(clk)为0时开始采集信号。X表示任意值。

image.png

4.5 运行并观察波形


       单击左上角三角形按钮启动fpga电路,当各端口信号满足设置的触发信号时,程序开始采集信号,并在waveform中显示采集到的信号。可通过左上角的一系列控制按钮调节波形显示。

 image.png

补充:

1、 当对源文件进行过修改后需重新运行Synthesize、Implement、Generate programming file,生成.bit文件,并在chipscope analyzer中通过configure重新加载.bit文件。

image.png

超声波时序图

image.png

以上时序图表明你只需要提供一个 10uS 以上脉冲触发信号,该模块内部将发出 8 个 40kHz 周期电平并检测回波。一旦检测到有回波信号则输出回响信号 。回响信号的脉冲宽度与所测的距离成正比。由此通过发射信号到收到的回响信号时间间隔可以计算得到距离。公式:uS/58=厘米或者 uS/148=英寸;或是:

距离=高电平时间*声速(346M/S)(室温下)/2;建议测量周期为 60ms 以上,以防止发射信号对回响信号的影响。

注 :

1 、 此模块不宜带电连接 , 若要带电连接 , 则先让模块的  GND  端先连接 , 否则会影响

模块的正常工作。

2 、测距时,被测物体的面积不少于  5 0.5  平方米且平面尽量要求平整,否则影响测量的

结果

image.png

TOP.V:


moduletop(ext_clk_25m,ext_rst_n,ultrasound_trig,ultrasound_echo,led    );
inputext_clk_25m;
inputext_rst_n;
inputultrasound_echo;
outputultrasound_trig;
outputled;
wireclk_12m5;
wireclk_25m;
wireclk_50m;
wireclk_100m;
wiresys_rst_n;
plluut_pll(//Clockinports    .CLK_IN1(ext_clk_25m),      //IN//Clockoutports    .CLK_OUT1(clk_12m5),     //OUT    .CLK_OUT2(clk_25m),     //OUT    .CLK_OUT3(clk_50m),     //OUT    .CLK_OUT4(clk_100m),     //OUT//Statusandcontrolsignals    .RESET(~ext_rst_n),//IN    .LOCKED(sys_rst_n));      //OUTwireclk_100khz_en;
clk_100khz_enuut_clk_100khz_en(
    .clk(clk_25m),
    .rst_n(sys_rst_n),
    .clk_100khz_en(clk_100khz_en)
    );
sounduut_sound(
    .clk(clk_25m),
    .rst_n(sys_rst_n),
    .clk_100khz_en(clk_100khz_en),
    .ultrasound_trig(ultrasound_trig),
    .ultrasound_echo(ultrasound_echo)
    );
wireultrasound_echo_r;
IBUF#(        .IOSTANDARD("DEFAULT")
)IBUF_inst(
        .O(ultrasound_echo_r),
        .I(ultrasound_echo)
    );
assignled=ultrasound_echo;
endmodule

这里不写IBUF这个不能通过chipscope检测到

clk_100khz_en.v:


moduleclk_100khz_en(clk,rst_n,clk_100khz_en    );
inputclk;
inputrst_n;
outputclk_100khz_en;
reg [7:0] cnt;
always@(posedgeclkornegedgerst_n)beginif(rst_n==1'b0)begincnt<=1'b0;endelseif(cnt==8'd249)begincnt<=1'b0;endelsebegincnt<=cnt+1'b1;endendassignclk_100khz_en=(cnt==8'd249);endmodule

sound.v:


modulesound(clk,rst_n,clk_100khz_en,ultrasound_trig,ultrasound_echo    );
inputclk;
inputrst_n;
inputclk_100khz_en;
inputultrasound_echo;//回响信号outputultrasound_trig;//脉冲激励信号reg [16:0]timer_cnt;
always@(posedgeclkornegedgerst_n)beginif(rst_n==1'b0)begintimer_cnt<=1'b0;endelseif(clk_100khz_en==1'b1)beginif(timer_cnt<17'd99_999)begintimer_cnt<=timer_cnt+1'b1;endelsebegintimer_cnt<=1'b0;endendelsebegintimer_cnt<=timer_cnt;
endendassignultrasound_trig=(timer_cnt==1'b1)?1'b1:1'b0;//每隔一秒产生一次脉冲endmodule

image.png

目录
相关文章
|
存储 监控 开发工具
FPGA如何进行片上调试?
FPGA如何进行片上调试?
264 0
FPGA如何进行片上调试?
FPGA-超声波测距数码管显示系列(包含进制转换、均值滤波)
FPGA-超声波测距数码管显示系列(包含进制转换、均值滤波)
221 0
FPGA-超声波测距数码管显示系列(包含进制转换、均值滤波)
|
存储 内存技术
FPGA-RAM核的使用及调试
FPGA-RAM核的使用及调试
276 0
|
异构计算
【黑金原创教程】 FPGA那些事儿 SignalTap II 调试技巧
简介工具篇系列的第三本教程,讲述各种与SignalTap II 有关的调试技巧。目录[黑金原创教程] FPGA那些事儿《工具篇III》:File01 - 上线调试与下线调试[黑金原创教程] FPGA那些事儿《工具篇III》:File02 - SignalTap 扫盲[黑金原创教程] F...
1803 0
|
12天前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的16QAM调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本项目基于FPGA实现了16QAM基带通信系统,包括调制、信道仿真、解调及误码率统计模块。通过Vivado2019.2仿真,设置不同SNR(如8dB、12dB),验证了软解调相较于传统16QAM系统的优越性,误码率显著降低。系统采用Verilog语言编写,详细介绍了16QAM软解调的原理及实现步骤,适用于高性能数据传输场景。
111 69
|
16天前
|
移动开发 算法 数据安全/隐私保护
基于FPGA的QPSK调制+软解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的QPSK调制解调系统,通过Vivado 2019.2进行仿真,展示了在不同信噪比(SNR=1dB, 5dB, 10dB)下的仿真效果。与普通QPSK系统相比,该系统的软解调技术显著降低了误码率。文章还详细阐述了QPSK调制的基本原理、信号采样、判决、解调及软解调的实现过程,并提供了Verilog核心程序代码。
53 26
|
22天前
|
算法 异构计算
基于FPGA的4ASK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4-ASK调制解调系统的算法仿真效果、理论基础及Verilog核心程序。仿真在Vivado2019.2环境下进行,分别测试了SNR为20dB、15dB、10dB时的性能。理论部分概述了4-ASK的工作原理,包括调制、解调过程及其数学模型。Verilog代码实现了4-ASK调制器、加性高斯白噪声(AWGN)信道模拟、解调器及误码率计算模块。
44 8
|
1月前
|
算法 物联网 异构计算
基于FPGA的4FSK调制解调系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的4FSK调制解调系统的Verilog实现,包括高斯信道模块和误码率统计模块,支持不同SNR设置。系统在Vivado 2019.2上开发,展示了在不同SNR条件下的仿真结果。4FSK调制通过将输入数据转换为四个不同频率的信号来提高频带利用率和抗干扰能力,适用于无线通信和数据传输领域。文中还提供了核心Verilog代码,详细描述了调制、加噪声、解调及误码率计算的过程。
50 11
|
1月前
|
算法 数据安全/隐私保护 异构计算
基于FPGA的1024QAM基带通信系统,包含testbench,高斯信道模块,误码率统计模块,可以设置不同SNR
本文介绍了基于FPGA的1024QAM调制解调系统的仿真与实现。通过Vivado 2019.2进行仿真,分别在SNR=40dB和35dB下验证了算法效果,并将数据导入Matlab生成星座图。1024QAM调制将10比特映射到复数平面上的1024个星座点之一,适用于高数据传输速率的应用。系统包含数据接口、串并转换、星座映射、调制器、解调器等模块。Verilog核心程序实现了调制、加噪声信道和解调过程,并统计误码率。
45 1

热门文章

最新文章

下一篇
DataWorks