adc verilog spi 时序
我用的是adc081sd芯片,(由于我们使用的是FPGA不用像单片机那样考虑极性cpol,相位cpha,下面仅仅介绍下跟单片机比较下) 什么是cpol:若cs被拉为低电平时sclk(时钟)是高那么cpol为1,若cs被拉为低电平时sclk为0时,cpol为0;
什么是相位 cpha:若cs被拉为低电平后是第一个时钟沿采集数据就为0,第二个时钟沿采集数据为1.
时钟上升沿对应SDATA位稳定时就为上升沿采集数据(下降沿时芯片内部会自动将数据送到SDTA引脚供上升沿采集),时钟下降沿对应图SDATA位稳定时就为下降沿沿采集数据,例如下图
如下图所示sclk上升沿时SDTA稳定,下降沿数据不稳定(那么时钟的下降沿时AD芯片送数据,上升沿到来采集管脚数据即可)。上升沿采集。

module adc
(
input clk_in,//
input rst_n_in,//
input adc_data,//caiji
output reg cs,
output reg sclk,
output reg[7:0] led
);
//产生状态
reg[5:0] cnt=0;
always@(posedge clk_in or negedge rst_n_in)
begin
if(!rst_n_in)
cnt<=0;
else
begin
if(cnt>=35)cnt<=0;
else cnt<=cnt+1;
end
end
reg[15:0] data_reg=16'b0;
always@(posedge clk_in or negedge rst_n_in)
begin
if(!rst_n_in)begin cs<=1;sclk<=1; end
else
begin
case(cnt)
0:begin sclk<=1; cs<=1; end
1:begin cs<=0; end
2:begin sclk<=0;end
3:begin sclk<=1;data_reg[15]<=adc_data;end //采集了数据最高位z2
4:begin sclk<=0;end
5:begin sclk<=1;data_reg[14]<=adc_data;end //采集了数据位z1
6:begin sclk<=0;end
7:begin sclk<=1;data_reg[13]<=adc_data;end//采集了数据z0
8:begin sclk<=0;end
9:begin sclk<=1;data_reg[12]<=adc_data;end//采集了数据DB7
10:begin sclk<=0;end
11:begin sclk<=1;data_reg[11]<=adc_data;end//采集了数据DB6
12:begin sclk<=0;end
13:begin sclk<=1;data_reg[10]<=adc_data;end//采集了数据DB5
14:begin sclk<=0;end
15:begin sclk<=1;data_reg[9]<=adc_data;end//采集了数据DB4
16:begin sclk<=0;end
17:begin sclk<=1;data_reg[8]<=adc_data; end//采集了数据DB3
18:begin sclk<=0;end ////采集了DB2
19:begin sclk<=1; data_reg[7]<=adc_data; end
20:begin sclk<=0;end //
21:begin sclk<=1;data_reg[6]<=adc_data;end//采集了数据DB1
22:begin sclk<=0;end //
23:begin sclk<=1;data_reg[5]<=adc_data;end//采集了数据DB0
24:begin sclk<=0;end //
25:begin sclk<=1;data_reg[4]<=adc_data;end//采集了数据ZERO 4
26:begin sclk<=0;end //
27:begin sclk<=1;data_reg[3]<=adc_data;end//采集了数据ZERO 3
28:begin sclk<=0;end //
29:begin sclk<=1;data_reg[2]<=adc_data;end//采集了数据ZERO 2
30:begin sclk<=0;end //
31:begin sclk<=1;data_reg[1]<=adc_data;end//采集了数据ZERO 1
32:begin sclk<=0;end //
33:begin sclk<=1;data_reg[0]<=adc_data;end //采集了数据ZERO 0
34:begin cs<=1; led<=data_reg[12:5]; end //将数据锁存,采下次数据时led的数据不会发生跳变
endcase
end
end
endmodule
adc verilog spi 时序的更多相关文章
- SPI接口扫盲 SPI定义/SPI时序(CPHA CPOL)
SPI接口扫盲 douqingl@gmail.com 为何要写这篇文档?百度上找出来的SPI接口中文描述都说的太过简略,没有一篇文档能够详尽的将SPI介绍清楚的.wikipedia英文版[注释 ...
- SPI总线协议及SPI时序图详解
SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口.SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚 ...
- SPI总线协议及SPI时序图详解【转】
转自:https://www.cnblogs.com/adylee/p/5399742.html SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接 ...
- FPGA构造spi时序——AD7176为例(转)
reference:https://blog.csdn.net/fzhykx/article/details/79490330 项目中用到了一种常见的低速接口(spi),于是整理了一下关于spi相关的 ...
- 使用软件模拟spi 时序时注意点
软件模拟 spi 时序有以下几个点需要注意: cs 使能后到第一个 sck 边沿需要延时. 最后一个sck 边沿到下一个 cs 需要延时. sck 的高电平和低电平本身需要维持时间. mosi 需要先 ...
- MCU2FPGA之SPI时序总线
转载自:http://blog.csdn.net/ce123/article/details/6895408 SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是S ...
- SPI时序
1.串行外围接口 高速.全双工的同步通信总线 一主多从 一般速度几十MHZ,最高可以工作在上百MHZ 2.连接图 3.工作模式
- 【接口时序】4、SPI总线的原理与Verilog实现
一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE 硬件平台: 1. FPGA型号:Xilinx公 ...
- SPI总线的原理与Verilog实现
转载地址:https://www.cnblogs.com/liujinggang/p/9609739.html 一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件 ...
随机推荐
- IOHelper(自制常用的输入输出的帮助类)
常用的读写文件,和地址转换(win和linux均支持),操作文件再也不是拼接那么的low了 using System; using System.Diagnostics; using System.I ...
- ProtoBuf练习(四)
其中一个类型 protobuf语言的oneof字段类型相当于C++语言的联合数据类型 工程目录结构 $ ls proto/ sample_oneof.proto proto文件 $ cat proto ...
- 【WIP】客户端JavaScript 事件处理
创建: 2017/10/15 完成: 2017/10/15 更新: 2017/11/04 加粗事件的参数 更新: 2017/12/12 增加事件处理时获取事件对象的方法 更新: 2019/05/2 ...
- 浅谈JavaScript--this指向
js中this的值取决于调用的模式 方法调用模式 var student={ name:"adoctors", showThis:function(){ console.log(t ...
- 洛谷P5170 【模板】类欧几里得算法(数论)
传送门 此题剧毒,公式恐惧症患者请直接转去代码→_→ 前置芝士 基本数论芝士 题解 本题就是要我们求三个函数的值 \[f(a,b,c,n)=\sum_{i=0}^n \left\lfloor\frac ...
- docker 推送镜像到私有地址
下面针对的都是docker官网的地址 先登录 docker login 输入docker ID ID不是你的注册邮箱,指的是你登录后显示的ID,然后输入密码 ....此时认为你已经登陆成功了 接着看下 ...
- /etc/hosts文件修改后如何生效
修改/etc/hosts之后正常情况应该是保存之后立即生效的,但是有时不是.使用uname -a 可以查看hostname是多少,就可以知道是否修改生效了.如果没有这时的策略有:1) 重启机器2) 重 ...
- Gradle用户使用指南
转载请事先沟通,未经允许,谢绝转载. 1. 新工具介绍(Introduction) 能够复用代码和资源能够构建几种不同版本参数的应用能够配置.扩展.自定义构建过程1.1 为什么选择Gradle(Why ...
- QuotaExceededError: The quota has been exceeded. localStorage缓存超出限制
今天在项目中遇到了一个问题,localStorage存储超出限制.报错信息如标题.这个是因为最近做了一波优化,把导航栏和一些用户信息本地化存储,都放在localStorage里,也不是每个用户会出现这 ...
- BZOJ 2462 [BeiJing2011]矩阵模板 矩阵哈希
昨天卡了一天常数...然后发现吧$unsigned\space long\space long$改成$unsigned$就可以过了$qwq$ 先把每一行的前缀哈希求出,然后再竖着把每个前缀哈希值哈希起 ...