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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

. Z" Q+ K/ }6 U2 Q3 D" i
5 |* |" ~# u4 V* E5 k+ f* t& T
分享下第二个程序,按照KDY的说法,第一个程序有点C化。
+ ~" _% D6 Z7 k/ Q: o$ A; k
游客,如果您要查看本帖隐藏内容请回复

/ {4 q3 O1 h  l* R当/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转换开始。
3 i# {+ ^" t; h6 l, m
7 i4 ~) Q6 Z+ `6 h方法二:; r" \' n& _* a+ l* ^( r. l
module TLC549 ( 5 U( k4 t0 M' B2 W0 V$ a
                    input sys_clk,
' D9 I: b8 u( ?                    input sys_rstn,4 F$ l; z* J, E
                    input  AD_In,
, ^) Z  U( @1 P$ U1 g) a$ W, N                    output AD_Cs,# X" M) |  b+ [2 P( |
                    output AD_Clk,0 o  t( t  M: v: z- t" |0 i
                    output clk_display,5 A& Y) F2 B/ A7 j- l9 s
                    output reg [7:0] Data_Out                   6 s+ C  c3 D( w1 y
               );6 E" }1 L1 y2 j$ v4 G; r

% P3 F5 ]# T! a3 Z& I// clk=50MHz , AD_CLK_r = 1MHz              4 G5 ?/ j) j3 F, {7 h5 R- [
reg  AD_CLK_r;
7 z' U/ H% j! J: f0 f, s6 H8 ]7 ~reg[5:0] Count;
  i4 @7 r* |* N# u, a
# q7 a5 z4 I- t7 Z, D, B; ralways @(posedge sys_clk or negedge sys_rstn)
: Z, j& ]4 P' kbegin
7 T7 ], @/ ~8 X& K9 e% y  if(!sys_rstn)
6 E- m( r% X9 U  begin( g5 T% O. |+ a
      Count <= 6'b0;
$ W6 a) n; Y8 i. @+ e" ~; r      AD_CLK_r <= 1'b0;
; s1 k2 Q* G7 A) f  R) V; |* k  end) g7 m5 a$ d1 i( U/ Q
  else if(Count < 6'd50) ( ~" i- [* c$ a- V4 Q0 ^6 R  l6 K- \5 L
        Count <= Count+1'b1;
. m' Q: K$ l" m9 j( n# r  else
8 H% |- P$ y3 d    begin
( {9 u6 }( B* u. i1 ^5 }  o  t# b      Count <= 6'd0;
4 _, ?( D+ U! }: _8 D8 V      AD_CLK_r <= ~AD_CLK_r;
& A- g; R6 L6 D3 ~6 l, Q    end
# H/ p8 Q' `' k; H5 C2 Jend: G# I8 D" ^2 a3 X- x: L* h$ Q
8 d" F2 I8 Z' l
assign clk_display = AD_CLK_r;1 k! j, R# o* X% g+ S% [" K. E8 B
( c5 ~/ c% n6 F
reg[4:0] COUNTER;& T( O( {- {8 i" }
always @(posedge AD_CLK_r or negedge sys_rstn)
) P& c% \3 j& L% S) R8 obegin3 ~9 l; C) O0 e
    if(!sys_rstn) COUNTER <= 1'b0;
5 K+ i' ]$ d. d& [    else COUNTER <= COUNTER+1'b1;3 F$ N' G9 N6 e8 {  G
end
& j) C# ?& }, l
" [( I* k) x4 g2 A" vassign AD_Cs = (COUNTER <= 5'd9)? 1'b0 : 1'b1;$ |+ `# m. n3 n* E
assign AD_Clk =  (COUNTER >= 5'd2 && COUNTER <= 5'd9)? AD_CLK_r : 1'b0;
* ]% h8 k$ z1 h2 |7 V
; K5 F. Z4 \; j# z0 Y. Z+ vreg[7:0] Data_Out_r;+ w1 A5 b6 M. R
reg [5:0] i;. e  A* u. q8 l
, }  }( i" u: M" a
always @(negedge AD_CLK_r )5 r( d  K  ?9 d" S' [! ^
begin
3 p& t0 q) W# B  if(COUNTER >= 5'd2 && COUNTER <= 5'd9)  9 B# F/ K% i, _2 D7 N
     begin
$ T7 g) z3 J8 ]' Q1 V! D% o/ M       Data_Out_r<={Data_Out_r[6:0],AD_In};  T8 m1 i. f% X; Y) H, o0 \9 B
     end
$ \  O5 L) W& v9 g& J  else  Data_Out <= Data_Out_r;
, j2 S! U+ r5 ~- \3 j! Qend
/ f* V  n! A( ^8 N/ `, T
( L+ y* T5 \/ j' ]/ ]5 v* |endmodule
# R& M( H8 j' ]. [+ t! Y0 k" M* P
& H4 Z$ }$ O( A/ x
& @( ^. X# `8 r. Z# ^/ O- C- W

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-1 23:34 , Processed in 0.125000 second(s), 26 queries , Gzip On.

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

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

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