找回密码
 注册
关于网站域名变更的通知
查看: 358|回复: 1
打印 上一主题 下一主题

转——AD芯片TLC549调试方法二

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-5 13:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
转——AD芯片TLC549调试方法二

' F8 F3 F% c$ v/ C, h6 }8 ?% b1 @" H3 z, C& D# O8 Y2 J) I" L1 V
分享下第二个程序,按照KDY的说法,第一个程序有点C化。% t* n" w' Y: V7 k# X/ o
游客,如果您要查看本帖隐藏内容请回复
3 Z: @& |; p  c: g0 i
当/CS变为低电平后,TLC549芯片被选中,同时前次转换结果的最高有效位MSB(A7)自DATA OUT端输出,接着要求自I/O CLOCK端输入8个外部时钟信号,前7个I/O CLOCK信号的作用,是配合TLC549输出前次转换结果的A6-A0 7位,并为本次转换做准备:在第4个I/O CLOCK信号由高至低的跳变之后,片内采样/保持电路对输入模拟量采样开始,第8个I/O  CLOCK信号的下降沿使片内采样/保持电路进入保持状态并启动A/D开始转换。转换时间为36个系统时钟周期,/CS保持高电平,或者I/O CLOCK时钟端保持36个系统时钟周期的低电平. 由此可见,在自TLC549的I/O CLOCK端输入8个外部时钟信号期间需要完成以下工作:读入前次A/D转换结果;对本次转换的输入模拟信号采样并保持;启动本次A/D转换开始。. R8 e7 N6 h+ o8 V5 c! D/ t/ ~
8 U+ {1 N# p: c% W2 ~; M
方法二:
& Q& s2 d/ H8 l9 _$ xmodule TLC549 ( : p, U# k. b+ ?3 T
                    input sys_clk,
' D) p; j+ m* U8 j+ F                    input sys_rstn,/ ]) w3 O) [$ A. O3 q/ t2 _
                    input  AD_In,
8 i) s1 X( l4 W% t7 G                    output AD_Cs,
7 p: v/ G; _+ O9 }2 `                    output AD_Clk,$ U8 r- h* j* i9 k( C0 o
                    output clk_display,
* B/ u& S$ t; @; P6 c/ T                    output reg [7:0] Data_Out                   % M  p0 Y- T" l4 k2 @3 _% H4 x! V: u
               );. s6 o( c3 Y4 Y2 X, U8 S

( N0 Q) |* m6 Z( S+ F5 U// clk=50MHz , AD_CLK_r = 1MHz              
7 l  P& K: ~' ^. \4 q6 L: \/ D7 breg  AD_CLK_r;& ?0 C- ^" K8 y. l- }2 B. T
reg[5:0] Count; & r5 |! G* p: M0 P* e

# `3 e9 F' V( ?always @(posedge sys_clk or negedge sys_rstn)
1 Y" R  O: l7 nbegin6 a1 s$ [  J, B7 u; h8 C' T: E% y
  if(!sys_rstn)/ p& z; C) l- S& u; ?" ?
  begin* r% T- a& s# U+ i/ q4 U4 A
      Count <= 6'b0;
2 [6 q  O  f4 c. q      AD_CLK_r <= 1'b0;
- T4 R" h% |! J  end1 [5 @2 S6 d+ n
  else if(Count < 6'd50) : o+ p$ r+ C9 A7 Z) D
        Count <= Count+1'b1;
5 v" S9 `1 d# g& f4 M; B  else7 f! ~/ Z7 {" ~4 R
    begin2 W) `2 L. j9 d. r  y; t
      Count <= 6'd0;
* ?% i: m; I5 f      AD_CLK_r <= ~AD_CLK_r;
# d3 l! w0 t4 ~& P" z% D7 K    end; x1 P: J1 j% g) I7 M1 C
end. s9 i# l/ v5 ?
) `% S+ x" V* r% n9 @# n
assign clk_display = AD_CLK_r;
, k/ p8 W, ^( I, q, @+ g  y, P2 Y0 ]& r. R$ p
reg[4:0] COUNTER;0 I/ A: [, f0 L; C2 U. `8 U
always @(posedge AD_CLK_r or negedge sys_rstn)# e2 n5 V& g% p, p4 U" _
begin
* A4 ]7 G- [& B& T; E! v  c    if(!sys_rstn) COUNTER <= 1'b0;
! W$ p1 b7 u$ ?) h4 e    else COUNTER <= COUNTER+1'b1;
) b# J5 e1 R" e# {3 Iend
# q9 d/ L& x: M4 y  q3 W) E5 \" U2 e( C  h
assign AD_Cs = (COUNTER <= 5'd9)? 1'b0 : 1'b1;
* L: {* z: H9 W* z! c6 r: _assign AD_Clk =  (COUNTER >= 5'd2 && COUNTER <= 5'd9)? AD_CLK_r : 1'b0;8 F! O$ P6 M. ?; Y" ]" y
; X: c9 t' H, r. s$ S- `
reg[7:0] Data_Out_r;- T( ~- w# a+ U- r0 f0 E
reg [5:0] i;% ~; ~  J4 F9 L: H, T- G
+ W% R" j9 n% O' B2 |* {  \" P
always @(negedge AD_CLK_r )* T. {* t5 E8 a$ M3 L& m
begin3 ]% l% e3 t9 H
  if(COUNTER >= 5'd2 && COUNTER <= 5'd9)  
& A' v3 q& x: q; I' B     begin6 g( b, F) [0 Y$ ~
       Data_Out_r<={Data_Out_r[6:0],AD_In};4 ^6 p) [6 z) v& n
     end
! g3 P- h. ~1 q, j0 S  else  Data_Out <= Data_Out_r; 6 A8 O# u( Q+ R& }
end$ v5 _. O. Z+ E% M
6 D, b/ m9 U7 b4 d1 a: K! B' d
endmodule

& r0 V" q3 O# E8 M6 _! a* C5 A
( W/ }. k% A0 ~& M

. z( S# \+ O) W- F1 y* G

该用户从未签到

2#
发表于 2019-5-5 17:51 | 只看该作者
回复看看隐藏内容
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-8-2 22:49 , Processed in 0.125000 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表