47.简易电压表的设计与验证(2)

(1)Verilog 代码:

module adc_collect(input                   clk         ,input                   reset_n     ,input   [7:0]           adc_data    ,output                  clk_adc     );wire                clk_adc_a       ;wire                clk_adc_turn    ;wire                locked          ;wire    [31:0]      n_volt          ;wire    [31:0]      p_volt          ;wire    [31:0]      data_n          ;wire    [31:0]      data_p          ;reg     [10:0]      ad_cnt          ;reg     [19:0]      sum_ad          ;reg     [27:0]      adc_mid         ;reg     [31:0]      volt_n          ;reg     [31:0]      volt_p          ;assign clk_adc = clk_adc_a  ; pll_20M         pll_20M_inst
(.clk_adc(clk_adc_a),                  // output clk_adc.clk_adc_turn(clk_adc_turn),        // output clk_adc_turn.resetn(reset_n),                    // input resetn.locked(locked),                    // output locked.clk(clk)                           // input clk
);      ila_volt        ila_volt_inst
(.clk(clk),                       // input wire clk.probe0(n_volt),                // input wire [31:0]  probe0  .probe1(p_volt)                 // input wire [31:0]  probe1
);//adc累加计数器
always@(posedge clk_adc_turn or negedge locked)if(!locked)    ad_cnt  <= 11'd0;else if(ad_cnt == 11'd1025)ad_cnt  <= 11'd1025;else ad_cnt  <= ad_cnt + 11'd1;//adc前1024个数据累加       
always@(posedge clk_adc_turn or negedge locked)if(!locked)sum_ad <= 20'd0;else if(ad_cnt <= 11'd1024)sum_ad <= sum_ad + adc_data;else    sum_ad <= sum_ad;//adc中值计算     
always@(posedge clk_adc_turn or negedge locked)if(!locked)adc_mid <= 28'd0;else if(ad_cnt == 11'd1024)adc_mid <= sum_ad >> 10;else if(ad_cnt == 11'd1025)adc_mid <= adc_mid;else adc_mid <= 28'd0;//精度定义   显示数据为4位数,其中第一位为个位,后三位为十分位,百分位,千分位。     40960_000 = 5* 2^13 * 1000assign data_n = (ad_cnt == 11'd1025)? 40960_000/(adc_mid + 1) : 0;assign data_p = (ad_cnt == 11'd1025)? 40960_000/(256 - adc_mid) : 0;    //电压计算
always@(posedge clk_adc_turn or negedge locked)if(!locked)volt_n <= 32'd0;else if((ad_cnt == 11'd1025) && (adc_data < adc_mid))volt_n <= (data_n * (adc_mid - adc_data)) >> 13;else    volt_n <= 32'd0;always@(posedge clk_adc_turn or negedge locked)if(!locked)volt_p <= 32'd0;else if((ad_cnt == 11'd1025) && (adc_data >= adc_mid))volt_p <= (data_n * (adc_data - adc_mid)) >> 13;else    volt_p <= 32'd0;   //传入ILAassign n_volt = volt_n;assign p_volt = volt_p;endmodule

(2)仿真文件:

`timescale 1ns / 1psmodule adc_collect_tb;reg         clk         ;
reg         clk_sample  ;
reg         reset_n     ;
reg   [7:0] adc_data    ;
reg   [7:0] data_reg    ;
reg         data_en     ;wire        clk_adc     ;initial clk = 1'd1;
always #10 clk = ~clk;initial clk_sample = 1'd1;
always #25 clk_sample = ~clk_sample;initial beginreset_n <= 1'd0;#25;reset_n <= 1'd1;#200; data_en <= 1'd0;#2000000;data_en <= 1'd1;    #2000000;$stop;
endalways@(posedge clk_sample or negedge reset_n)if(!reset_n)data_reg <= 8'd0;else if(data_en)data_reg <= data_reg + 8'd1;else data_reg <= 8'd0;always@(posedge clk_sample or negedge reset_n)if(!reset_n)adc_data <= 8'd0;else if(!data_en)adc_data <= 8'd125;else adc_data <= data_reg ;adc_collect     adc_collect_inst(.clk         (clk),.reset_n     (reset_n),.adc_data    (adc_data),.clk_adc     (clk_adc));endmodule

(3)仿真波形(仿真前先把ILA注释掉):

  • 整体波形图:

e91e78efd7254f989a58bd07c77ff99a.png

  • PLL时钟波形图:

    de1dcd648a1a4fe28f8b6c5f9aac8207.png

  • 求中值中,累加计数器和中间值的计算:

    921f51120959493dbe26e3eca4c0027e.png

  • 后续dac数据的赋值以及精度的波形:8caca2e454164766bde69262996afcd1.png
  • 数值波形:d1bf8d3b05c84929b13a8b2c9ff0e0ed.png

(4)XDC文件:

set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[6]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk_adc]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[7]}]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[4]}]
set_property IOSTANDARD LVCMOS33 [get_ports reset_n]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[3]}]
set_property IOSTANDARD LVCMOS33 [get_ports clk]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[5]}]
set_property IOSTANDARD LVCMOS33 [get_ports {adc_data[2]}]
set_property PACKAGE_PIN W19 [get_ports clk]
set_property PACKAGE_PIN N15 [get_ports reset_n]
set_property PACKAGE_PIN L13 [get_ports {adc_data[0]}]
set_property PACKAGE_PIN M13 [get_ports {adc_data[1]}]
set_property PACKAGE_PIN M16 [get_ports {adc_data[2]}]
set_property PACKAGE_PIN M15 [get_ports {adc_data[3]}]
set_property PACKAGE_PIN M20 [get_ports {adc_data[4]}]
set_property PACKAGE_PIN N20 [get_ports {adc_data[5]}]
set_property PACKAGE_PIN M22 [get_ports {adc_data[6]}]
set_property PACKAGE_PIN N22 [get_ports {adc_data[7]}]
set_property PACKAGE_PIN L14 [get_ports clk_adc]

(5)实验现象:

编译遇到报错:

5a279abbdaba48698fffe837e4bb21b7.png

解决方法:

0a041d34bbe3427ab0027af9406fa7f9.png

未接线,0v时,ILA波形: 

98f9f2159c674d9f83d88055e677dffe.png

c52a3e7f8593412da068c704ef0db6c5.png

-2.3v时,ILA波形: 

23d5d16c710e4411b424a79636c81213.png

c77a6cbe40454f449691fc9942a9150e.png

-1.5v时,ILA波形:

17c44a677c954b5a9f686b3da816e80b.jpeg

0db4663918024724a00cdea3ca7e74df.png

0.5v时,ILA波形:

61de4648ec7e4d6a9ad158d13b355167.jpeg

4c813f5035f147edaf6dbac7aebeadd5.png

2.7v时,ILA波形:

4dd3136328bc4da495b39867c7055323.jpeg

f76211b777dc4c2b8eb092c3cec9ab57.png

3.75v时,ILA波形:

20a01f22e92a494899e4f72db1fbfff5.jpeg

3f75a27d3d024f979c66f4a7734836d9.png

4.85v时,ILA波形:

d853597830434250910d1ca8bc149130.jpeg

e2c0c32b86c94c83b84e67518ab2a11a.png

 

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

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

相关文章

提交高通量测序处理数据到 GEO --- 操作流程

❝ 写在前面 由于最近在提交课题数据到 NCBI 数据库&#xff0c;整理了相关笔记。本着自己学习、分享他人的态度&#xff0c;分享学习笔记&#xff0c;希望能对大家有所帮助。推荐先按顺序阅读往期内容&#xff1a; 1. 提交高通量测序数据到 GEO --- 说明书 2. 提交高通量测序原…

基于机器学习的二手房价格分析与预测设计与实现

概述 随着西安房地产市场的不断发展和变化&#xff0c;对二手房价格的准确预测变得至关重要。本研究旨在利用机器学习技术对西安市二手房价格进行深入分析与预测&#xff0c;通过对原始数据进行数据预处理和特征提取&#xff0c;以构建有效的预测模型。通过数据分析和可视化&a…

LabVIEW学习-LabVIEW处理带分隔符的字符串从而获取数据

带分隔符的字符串很好处理&#xff0c;只需要使用"分隔符字符串至一维字符串数组"函数或者"一维字符串数组至分隔符字符串"函数就可以很轻松地处理带分隔符地字符串。 这两个函数所在的位置为&#xff1a; 函数选板->字符串->附加字符串函数->分…

第13周 简历职位功能开发与Zookeeper实战

第13周 简历职位功能开发与Zookeeper实战 本章概述1. Mysql8窗口函数over使用1.1 演示表结构与数据1.2 案例1:获取男女总分数1.3 案例2****************************************************************************************本章概述 1. Mysql8窗口函数over使用 参考案例…

从零开始学习机器学习,掌握AI未来的关键!

从零开始学习机器学习 1. 介绍1.1 人工智能&#xff08;AI&#xff09;概述1.2 机器学习在人工智能中的应用1.3 机器学习基础概念 2. 监督学习2.1 什么是监督学习2.2 回归分析2.3 分类问题2.4 模型评估和选择 3. 无监督学习3.1 什么是无监督学习3.2 聚类算法3.3 降维技术 4. 深…

Elasticsearch 7.x入门学习-Java API操作

1 创建项目 在idea开发工具中创建Maven项目 修改 pom 文件&#xff0c;增加 Maven 依赖关系 <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</versi…

C语言 | Leetcode C语言题解之第268题丢失的数字

题目&#xff1a; 题解&#xff1a; /* 求和运算 */ /* 对[0,n]求和, 减去数组每个元素, 得出丢失的元素 */ int missingNumber(int* nums, int numsSize){int i;int sum numsSize;for (i 0; i < numsSize; i) {sum i - nums[i];}return…

每天五分钟计算机视觉:目标检测模型从RCNN到Fast R-CNN的进化

本文重点 前面的课程中,我们学习了RCNN算法,但是RCNN算法有些慢,然后又有了基于RCNN的Fast-RCNN,Fast R-CNN是一种深度学习模型,主要用于目标检测任务,尤其在图像中物体的识别和定位方面表现出色。它是R-CNN系列算法的一个重要改进版本,旨在解决R-CNN中计算量大、速度慢…

python-阶乘和(赛氪OJ)

题目描述 求Sn​1!2!3!4!5!⋯n!的值&#xff0c;其中 &#x1d45b;n 是一个数字。输入格式&#xff1a; 输入一个整数 n。输出格式&#xff1a; 输出对应的 Sn​。 样例输入输出样例输入 5样例输出 153数据范围 对于 100% 的数据&#xff0c;保证1≤n≤20。来源/分类&#xff…

接口自动化测试框架实战-4-日志方法封装

上一小节我们讲解了文件读写方法的封装方法&#xff0c;本小节我们完成一下框架日志的封装方法。 首先我们讲解一下日志封装和日志记录有哪些用处&#xff1f; 更加方便的设置日志的格式和输出方式全局方法可以各个类/函数中都能统一调用分类记录接口用例执行日志&#xff0c…

【CPS出版】2024年智能计算与数据分析国际学术会议(ICDA 2024,9月6日-8)

为探讨数据科学和计算智能领域的关键问题&#xff0c;促进相关交流&#xff0c;2024年智能计算与数据分析国际学术会议&#xff08;ICDA 2024)将于2024年9月6日-8日在中国青岛召开。 本届会议拟邀请数据分析和计算智能领域的顶级专家、学者和产业界优秀人才&#xff0c;围绕当前…

【C语言】指针大小知多少 ?一场探寻C语言深处的冒险 !

目录 C语言中指针的大小1. 指针大小的基本概念1.1 32位系统1.2 64位系统 2. 指针大小示例2.1 32位系统输出2.2 64位系统输出 3. 指针大小与数据类型无关示例输出示例 4. 跨平台的指针大小示例输出示例 5. 关键点总结5.1 指针大小与平台关系5.2 跨平台编程注意事项 6. 指针大小示…

【QAC】Dashboard服务端如何配置

【更多软件使用问题请点击亿道电子官方网站】 1、 文档目标 解决Dashboard服务端如何配置的问题。 2、 问题场景 客户想使用Dashboard&#xff0c;Dashboard服务端如何配置。 3、软硬件环境 1、软件版本&#xff1a;HelixQAC23.04 2、机器环境&#xff1a;Windows 64bit 3…

arthas在idea和docker中的应用

基于IDEA工具使用 1&#xff0c;安装arthas插件 安装之后重启&#xff0c;然后再代码区域右键如果可以看到如下菜单选项&#xff0c;则说明安装成功 2&#xff0c;pom文件中配置arthas相关jar包 <!-- https://mvnrepository.com/artifact/com.taobao.arthas/arthas-pack…

解决小程序web-view两个恶心问题

&#x1f9d1;‍&#x1f4bb; 写在开头 点赞 收藏 学会&#x1f923;&#x1f923;&#x1f923; 1.web-view覆盖层问题 问题由来 web-view 是一个 web 浏览器组件&#xff0c;可以用来承载网页的容器&#xff0c;会自动铺满整个页面。 所以这得多恶心。。。不仅铺满&…

机会性加密技术:网络安全的新趋势

在当今数字化时代&#xff0c;网络安全已成为各行各业不可忽视的重要议题。随着网络攻击手段的不断演进&#xff0c;传统的加密方式已难以满足复杂多变的安全需求。机会性加密技术&#xff08;Opportunistic Encryption&#xff0c;简称OE&#xff09;&#xff0c;作为一种新兴…

基于微信小程序的健康饮食系统/健康饮食管理系统

摘 要 随着信息技术和网络技术的飞速发展&#xff0c;人类已进入全新信息化时代&#xff0c;传统管理技术已无法高效&#xff0c;便捷地管理信息。为了迎合时代需求&#xff0c;优化管理效率&#xff0c;各种各样的小程序应运而生&#xff0c;各行各业相继进入信息管理时代&…

[Vulnhub] Acid-Reloaded SQLI+图片数据隐写提取+Pkexec权限提升+Overlayfs权限提升

信息收集 IP AddressOpening Ports192.168.101.158TCP:22,33447 $ nmap -p- 192.168.101.158 --min-rate 1000 -sC -sV Not shown: 65534 closed tcp ports (conn-refused) PORT STATE SERVICE VERSION 22/tcp open ssh OpenSSH 6.7p1 Ubuntu 5ubuntu1.3 (Ubuntu Lin…

前端面试宝典【Javascript篇】【2】

欢迎来到《前端面试宝典》&#xff0c;这里是你通往互联网大厂的专属通道&#xff0c;专为渴望在前端领域大放异彩的你量身定制。通过本专栏的学习&#xff0c;无论是一线大厂还是初创企业的面试&#xff0c;都能自信满满地展现你的实力。 核心特色&#xff1a; 独家实战案例…

jackson序列化(jackson codec)

Jackson 是一个用于 Java 平台的开源 JSON 库&#xff0c;它提供了灵活且高效的方式来处理 JSON 数据的序列化(Java对象 → JSON字符串)和反序列化(JSON 字符串→ Java对象)。 以下是 Jackson 的一些主要特点和功能&#xff1a; 高性能&#xff1a;Jackson 通过使用基于流的处理…