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

Verilog 寄存器数据类型更新问题(讨论)

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-3-17 17:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
我在用Verilong代码做液晶显示时。有一个不能更新的寄存器数据类型的问题,现请教下各位大虾。
% s$ }. E0 C) {/ g: C过程如下:我使用Data_Shift_Direction作为寄存器类型缓存区。初始时,将下面参数中Data_Static赋值给Data_Shift_Direction。然后根据pro_signal信号的变化将其他的参数赋值给Data_Shift_Direction。但是液晶第二行上总是显示“Mouse's silent”。并没有更新显示。然后我就加了一个测试信号test_signal。看外部模块数据变化时,Data_Shift_Direction有没有更新。结果发现测试信号test_signal随着pro_signal信号的变化而正确变化。这就证明Data_Shift_Direction中的数据应该也更新了。可是液晶上第二行还是显示“Mouse's silent”。即初始化时所赋的值。
" l/ C% H6 I  i3 A然后我想是不是时钟的问题。因为两段并行代码一个是48M的时钟,而另一个则是500Hz的时钟。但觉得这没有道理。因为pro_signal信号的变化我自己可以随时控制,让pro_signal信号变化就变化,不变化就不变化。只要pro_signal信号不变化的时候,那么Data_Shift_Direction的数据也不再变化。即使后面一段代码是500Hz触发的,也应该能够检测到Data_Shift_Direction里面的数据。不知道哪位大虾碰到过这种情况没。有的话,请一起来讨论讨论下吧。
& t# W5 ?& S. r1 J2 X+ F" L, X3 @3 \% w% q
现把这部分代码粘贴如下:' l2 F$ u6 e" r, ^
parameter   Data_First = "This is an App",                //液晶显示的第一行的数据( [7 v& _; ~3 G8 b) O* l
            Data_R_U = "Shift Ri or Up",                      //液晶显示的第二行的数据% D  c, H* t4 z  O
            Data_B_RB = "Shift Be or RB",                : R! @- F0 G9 c' ?
            Data_L_LU = "Shift L or LUp",% Q' g: I/ _  ~, X
            Data_LB = "Shift Left_bel",
! A( }, d8 K1 z# K+ w, |4 B( _+ `            Data_L_Button = "You Left click",
8 m3 B% v5 y8 n, ]# p. c            Data_R_Button = "You Righ click",
! N/ r8 b0 h- G! ^  _) U2 V            Data_Static = "Mouse's silent";
" G/ \5 \. _! n; M: ?/ w1 _* ?/ z1 L) e0 ?: G% z1 m
always@(posedge clk_48m or posedge rst)! r5 ]) Y/ {  @) g" S
begin
4 i8 A& a4 e* X( v3 u* O    if(rst): ?7 ]0 Y9 H/ c% T
        begin
; |2 N6 T( G7 ~+ D' z7 C            Data_Shift_Direction <= Data_Static;
& z: v8 I* e( R' T                    test_signal <= 3'b000;- P  K) A. F1 E$ t
        end/ e  G0 F4 v7 L) c5 ~
    else8 n9 P' @2 l$ T4 }& R) g
        begin
* |: G) E) j! |5 s- `# V            if(pro_signal == 4'b0001)   //LED1 light9 k/ S( i- V' I; j4 j+ G+ A  E6 B
                begin$ u- G. w# S7 F
                    Data_Shift_Direction <= Data_R_U;5 q, `% T  C8 U9 N
                    test_signal <= 3'b001;3 [; i0 S# S+ z
                end) z) Z+ A) z" S( L, P5 m% S/ a
            else if(pro_signal == 4'b0010)  //LED2 light
4 A7 M3 }6 H) E: ]                begin
0 T5 i; x+ y0 a/ ^9 @. {                    Data_Shift_Direction <= Data_L_Button;4 G6 o: h7 ~! H& s9 _
                    test_signal <= 3'b010;. [2 H  ^7 w4 t
                end
6 ?; v1 d( W; \! i" S            else if(pro_signal == 4'b0011)  
  z- A8 x1 a! E# K3 X4 o2 }                begin
- n7 i. o! H4 T, N& h; u# N- E                    Data_Shift_Direction <= Data_R_Button;
7 p& e9 e1 h* \1 g                    test_signal <= 3'b011;' d  @$ P2 D# ]" ?9 ?1 o
                end# t; p4 K/ z4 e0 u3 @" w
            else if(pro_signal == 4'b0100)  //LED3 light
! u6 X+ k$ I5 b5 o6 ^; ?9 }, B# I$ ]                begin
1 D! j8 p; s; s                    Data_Shift_Direction <= Data_L_LU;
6 M0 ^# H! I. K                    test_signal <= 3'b100;
- D) r% m- M* ~  W" s+ [5 D3 S5 n                end7 {2 U6 P* u) i5 ?8 i) s
            else if(pro_signal == 4'b0101)  //LED4 light, x# L) b. P% ~, F" o9 Z
                begin
5 f4 R5 O- \) |2 j1 [4 |                    Data_Shift_Direction <= Data_B_RB;9 F7 B3 I+ V- x( k# S; ]) k2 H& _
                    test_signal <= 3'b101;, e( q  ~  Q- `7 Z3 i/ ~3 X
                end                                                           
, p, e# i, _4 V. `$ c            else if(pro_signal == 4'b0110)  //LED5 light
/ l& A) o& t) H8 U* m                begin; w  c( Q, s0 u, S* W
                    Data_Shift_Direction <= Data_LB;
( y7 E; N( w, f                    test_signal <= 3'b110;. ~# m. ^% W8 b1 p
                end" N. i6 R# m% n/ w' d
            . W8 Y8 M& O) O3 o
            else
, b" l. K" B% Q; V* P* ?) c                begin
  K5 v3 v8 i$ ~) w                    Data_Shift_Direction <= Data_Static;) ]& }/ ?5 m  Y
                    test_signal <= 3'b000;
& Y; N+ j: O3 ~                end. b% g' Y5 o: }6 |5 M
            
' m" u. b2 W, S/ R! W2 i        end7 _3 P& U. w0 M; t1 B: j. I3 a
end
% q' @" _2 M  c5 ?$ P7 B3 t% O4 _- s( [) Q: d
always @(posedge clk_500 or posedge rst)5 h: X7 a' u- U, Z+ e. n4 o% t
begin
! Z. }4 i- c' G   if(rst)
3 W4 S- W8 A- g$ O6 L4 O      begin
8 p0 b+ @9 h5 D0 O6 }/ ~          RS <= 1'b0;                                       //复位:RS=0时为写指令;                       
' X5 g% J4 `7 f) `+ O+ e          DB8 <= 8'b0;                                      //复位:使DB8总线输出全0   
) G; r  |! X# }  F& b: _    end
. ]) y7 E2 J, v) s   else7 Y- [3 J+ `/ Y8 c/ T% G0 L2 W6 j
      begin                                 % Y5 B/ D7 f& D! c  R9 P, A
                if(disp_count == 14)                        //disp_count等于14时表示第一行数据已写完( \! B" ?' T" u5 t+ g4 Q
                    begin0 ~  u+ a$ y. T- r# h& z5 ]
                        DB8 <= 8'b11000001;                 //送入写第二行的指令
5 Q+ X: q) l- Y: M& }                        RS <= 1'b0;
2 }* c7 N; v' o3 n+ g                        disp_count <= 4'b0; $ T, J! G$ F7 z. w- }9 K5 J5 `9 X. @
                        Data_Sec_Buf <= Data_Shift_Direction;- m* w* K& d6 V2 n  N
                        state <= Write_Data_Sec;         
) Z  h4 U& a" x: D' t. f( f' }% e: Q- f                    end- A4 E( j) Z- r# L4 X, Z
                else. F4 X  ^# n5 }+ b; K" U7 _  m
                    begin: y, Q8 X1 U9 J* i' ?' [
                        DB8 <= Data_Fir_Buf[111:104];  B7 h7 [' N1 t) T4 U$ y
                        Data_Fir_Buf <= (Data_Fir_Buf << 8);
0 _" [7 D; y# a                        RS <= 1'b1;                         //RS=1表示写数据
9 s  ]3 W. a% z- L                        disp_count <= disp_count + 1'b1;: X2 X: l7 \" H3 y
                        state <= Write_Data_Fir;
7 O8 L* H: K- @# P" B  f' ~3 W                    end
; z" [% ~" {$ Q0 S      end9 G& W. S( d8 P
end
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-7-20 02:32 , Processed in 0.109375 second(s), 24 queries , Gzip On.

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

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

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