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,一经查实,立即删除!

相关文章

chrome 插件:content-script 部分逻辑在页面无法生效,可考虑插入 script 到页面上

背景: 某页面有个输入框, 用的应该是什么库里的组件, 直接修改内容不生效/机制不明确, 于是使用 paste event 粘贴到输入框, 结果发现也不行 定位: 使用 mutationObserver , 发现事件确实触发了, 输入框内容变了, 但马上又变回来了, 于是怀疑是输入框组件有做 mutationObers…

软考上岸后,我过上了周末双休的生活

很多人说这个证书考了没用&#xff0c;但在我周围的一些企业是很认可的&#xff0c;我也在考了这个证之后&#xff0c;开始换工作&#xff0c;薪资涨了2倍不说&#xff0c;还可以从事项目管理的工作&#xff0c;算是达到了职业目标。 况且这个证书还能落户&#xff0c;像有一些…

提交高通量测序处理数据到 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…

PHP SimpleXML

PHP SimpleXML PHP的SimpleXML扩展提供了一个非常方便的方式来处理XML数据。它是PHP内置的&#xff0c;因此不需要安装额外的库。SimpleXML可以将XML数据转换成对象&#xff0c;使得操作XML变得简单直观。本文将详细介绍SimpleXML的使用方法&#xff0c;包括加载XML、访问和修…

LLaMA模型量化方法优化:提高性能与减小模型大小

LLaMA模型量化方法优化:提高性能与减小模型大小 LLaMA模型量化方法优化:提高性能与减小模型大小引言新增量化方法性能评估7B模型13B模型 结果分析结论 LLaMA模型量化方法优化:提高性能与减小模型大小 引言 在大型语言模型(LLM)的应用中,模型大小和推理速度一直是关键的挑战。…

【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. 指针大小示…

求教Postgresql在jdbc处理bit(1)字段的预处理解决方案

1.建表语句: CREATE TABLE public.h_user (id serial4 not null,username varchar(50) NULL,"password" varchar(64) NULL,nickname varchar(60) NULL,email varchar(255) NULL,gender bit(1) NULL,height float4 NULL,CONSTRAINT user_pkey PRIMARY KEY (id) );2.使…

【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;会自动铺满整个页面。 所以这得多恶心。。。不仅铺满&…