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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

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

9 l# P& {7 b9 a" _7 a
* L1 W  v  B5 m/ W/ U
分享下第二个程序,按照KDY的说法,第一个程序有点C化。, y% e* S3 [1 ^+ M# m# m
游客,如果您要查看本帖隐藏内容请回复
3 @: i+ K1 S: u5 g  P* [7 V% q
当/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转换开始。
1 E% X. S+ i' u: K! y/ D
4 {& l# N( D  j. V$ h+ Y6 ^方法二:, A# b- v9 y2 O6 D' b
module TLC549 ( + w& j) j3 o8 L9 ^8 ~
                    input sys_clk,
" T9 F' l0 }; T! \% T                    input sys_rstn,
: {$ o5 ~7 H5 N                    input  AD_In,' c1 V3 A1 U$ b! h2 L* w$ \" R
                    output AD_Cs,
0 M2 F7 o' U$ g/ H* x7 _                    output AD_Clk,$ x' R3 B9 V) g: P8 k$ d4 D
                    output clk_display,
2 [( w) K& `" U% a* W4 P# v; A; y                    output reg [7:0] Data_Out                   # j/ S) A0 N4 C' Y' u! W9 [
               );& s- [" K% @8 t7 m
4 ?/ Z6 ?* M+ a; J
// clk=50MHz , AD_CLK_r = 1MHz              
$ L, m4 \) x2 v1 a* }# A& u3 [reg  AD_CLK_r;6 |0 P5 b2 O4 a* [0 C
reg[5:0] Count; ! `5 j: }0 Q/ Y
$ w! k0 X$ Q6 u& A! X7 M. j
always @(posedge sys_clk or negedge sys_rstn)1 C4 M, i( L7 e8 F# |) r
begin
) \  ^. R/ `2 c& k! w/ d  if(!sys_rstn)
" N3 B0 v/ m* [) O  begin
$ V! ]+ E7 E& x, K/ C3 Y      Count <= 6'b0;
' ~% J: q( _( a& d9 ~$ ?      AD_CLK_r <= 1'b0;
% t( o6 s5 e# U  end
0 j5 }. I4 \" I5 o% Y  else if(Count < 6'd50) 7 q. C3 m9 J+ J) A% K) U$ F7 V
        Count <= Count+1'b1;. Z- j6 o8 C0 |& `* Y
  else) s  f+ g9 k  O
    begin- f% N! X, }$ N: j2 X6 A' }- ?
      Count <= 6'd0;
$ H* v. m" |# d" H. ^8 e- L2 ?9 I      AD_CLK_r <= ~AD_CLK_r;3 U  D" {' n$ L9 Y: a  @
    end
  S4 J: e4 d' i" Jend
) U( D$ [1 Z: @* V( W2 \/ k" K
6 A7 i' V3 W; ]' @) ?# y# `7 Wassign clk_display = AD_CLK_r;0 `3 _5 o( @  h# u

9 \1 D$ ~! g2 J9 b. D( T% b6 Freg[4:0] COUNTER;! N. G" K1 f! Q) ~2 Z1 D- b, Y
always @(posedge AD_CLK_r or negedge sys_rstn)
. O2 L, Z6 S! Sbegin" h  z9 C( ?1 Y. R) G9 M! C% C! ?
    if(!sys_rstn) COUNTER <= 1'b0;4 R2 P- f- f' Q! V
    else COUNTER <= COUNTER+1'b1;. b; {3 {# |5 R: r4 d: _
end
3 Z/ n# p) A+ d7 [
: D9 S9 f8 u( h% W6 Z7 v' d0 h! Passign AD_Cs = (COUNTER <= 5'd9)? 1'b0 : 1'b1;
! x' U: G9 z( R! Nassign AD_Clk =  (COUNTER >= 5'd2 && COUNTER <= 5'd9)? AD_CLK_r : 1'b0;8 ]/ e- B# f' z% n, A( j

# d; p% s$ F$ m: @  creg[7:0] Data_Out_r;. G: [' d3 c6 j, N* R( T0 z
reg [5:0] i;2 c: E! P% n3 W

0 B- B: Z3 o, e- R- Valways @(negedge AD_CLK_r )
! X8 F; w* |8 S, M. I4 ybegin, M- x; z" d8 b  j" ?% B# @
  if(COUNTER >= 5'd2 && COUNTER <= 5'd9)  / o; {$ k$ W! n; q% M
     begin
% H; c) \% E, y# s. [- W       Data_Out_r<={Data_Out_r[6:0],AD_In};
" c% U7 \! c3 c0 g0 `  x     end
. i* @0 U0 C. G! X; ]$ _2 i! @  else  Data_Out <= Data_Out_r;
+ x) L& @( z6 Lend, w& ^* b! ^9 `8 s  l/ D

& {$ n# y/ Q" L3 ?2 nendmodule

! q- Z0 B) s1 P# ^
3 S- L" V; Z0 n

0 a& P- I% R7 H

该用户从未签到

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

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 09:08 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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