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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我在用Verilong代码做液晶显示时。有一个不能更新的寄存器数据类型的问题,现请教下各位大虾。
' [  g  U: b) b3 x过程如下:我使用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”。即初始化时所赋的值。+ g* p8 J9 |6 r" N0 W
然后我想是不是时钟的问题。因为两段并行代码一个是48M的时钟,而另一个则是500Hz的时钟。但觉得这没有道理。因为pro_signal信号的变化我自己可以随时控制,让pro_signal信号变化就变化,不变化就不变化。只要pro_signal信号不变化的时候,那么Data_Shift_Direction的数据也不再变化。即使后面一段代码是500Hz触发的,也应该能够检测到Data_Shift_Direction里面的数据。不知道哪位大虾碰到过这种情况没。有的话,请一起来讨论讨论下吧。& b1 s& [0 [2 _0 ~  J
! m- y0 _9 e% f3 p! |
现把这部分代码粘贴如下:
/ @& F. ^. @. I. _4 Z! o6 [parameter   Data_First = "This is an App",                //液晶显示的第一行的数据, `! G4 [$ l% E/ R$ U/ q3 ^6 z
            Data_R_U = "Shift Ri or Up",                      //液晶显示的第二行的数据# K" {: @. L6 N, f5 U% [! U# ^' N
            Data_B_RB = "Shift Be or RB",                  `! X) w+ m- R5 u; F
            Data_L_LU = "Shift L or LUp",# G( p7 N: P8 @( v2 K
            Data_LB = "Shift Left_bel",
& P2 [3 ^' K6 N4 x4 C6 n            Data_L_Button = "You Left click",' X. p  B: z" s) f
            Data_R_Button = "You Righ click",$ i6 g8 V, Q5 A' e$ K
            Data_Static = "Mouse's silent";
; ?) V  V- L  k3 K* _8 Z, `; r7 [; L7 S; P) m2 }# ?
always@(posedge clk_48m or posedge rst)
' h: i$ t% Y  D; Mbegin
6 b9 G, l4 I9 j# J    if(rst)& t3 W0 m  t4 x$ I
        begin+ q& V! O$ n" o" `
            Data_Shift_Direction <= Data_Static;% N* P7 I/ [7 z2 V% f2 P4 ], N; ^
                    test_signal <= 3'b000;
6 D6 M0 r, V  V2 a) p. K: x        end
3 K( Q3 o0 m. \    else# J- s  z+ l* S2 e  x+ [" ?
        begin
/ ~/ Y0 Y+ Q! v8 y            if(pro_signal == 4'b0001)   //LED1 light/ V; Q: A$ S8 _" L+ j
                begin
9 w( ~6 v9 s5 o8 }8 [: u! e                    Data_Shift_Direction <= Data_R_U;7 g( f+ G, q: {+ v" s
                    test_signal <= 3'b001;' H$ z- @7 ~6 {' h: {2 I* n; @
                end
5 v. X* n: j; y3 ^# l/ l5 O            else if(pro_signal == 4'b0010)  //LED2 light
' _5 F2 j' [6 o                begin
$ `7 Z3 U. ^& C1 {                    Data_Shift_Direction <= Data_L_Button;
( S" Z4 U, p' M+ E, I                    test_signal <= 3'b010;
. i. i4 S, ]3 B# x- m& A0 D3 z; b3 `  a                end
& x' ?* u. x$ j" S( A) y, C3 A- C            else if(pro_signal == 4'b0011)  . b$ ^' a7 L& \1 r2 f/ D
                begin
" C! t. i. J) v+ H* d                    Data_Shift_Direction <= Data_R_Button;
, O) f: H% C' f0 e$ V6 d                    test_signal <= 3'b011;; _0 x3 v) c2 E6 o
                end' z- \* o0 G6 W: f4 K
            else if(pro_signal == 4'b0100)  //LED3 light4 q" Y  D0 H& h6 X& M8 P' A
                begin
: F# q# w0 R9 Y  b                    Data_Shift_Direction <= Data_L_LU;
! |+ x- K9 \9 F$ V1 n% X                    test_signal <= 3'b100;, `" i8 Z/ W  h% C8 P
                end
% g, M+ c* o0 `9 b" C; L1 @, s- ?            else if(pro_signal == 4'b0101)  //LED4 light  ]8 j; |9 \# p
                begin# z, o: e( Z( ^- q4 Z5 O
                    Data_Shift_Direction <= Data_B_RB;& d# ?) d' w- F
                    test_signal <= 3'b101;# Z6 D7 z& L$ `+ s
                end                                                           0 d5 }% X( m% L* G: r; E8 L
            else if(pro_signal == 4'b0110)  //LED5 light
; I$ o$ E# X$ U  W                begin
2 n- y& c3 @- F+ s- M                    Data_Shift_Direction <= Data_LB;8 O, W6 x/ K. B9 ~
                    test_signal <= 3'b110;( L3 ]: u4 b8 i1 l4 H2 g1 J( S
                end
+ P) Z8 |( F: J* X6 w# X            
- }) I" B, F% g0 v0 T4 `6 S            else
3 ]4 {7 t& u' E/ {& w                begin' c) z* W7 W, n* m# |/ ^( D
                    Data_Shift_Direction <= Data_Static;
' |# k4 O: |* J1 M4 `" m                    test_signal <= 3'b000;
* z) H  {" D4 z# O/ q* ~                end
( U+ s0 O. ^1 c4 V5 k! _% T0 k            
; u2 g$ M& Y1 ]6 ?7 g, B) I3 h        end
) T- V) H# Q, w. C8 G+ wend
8 G, @' I5 q) C- k! x% n, V6 v- p5 B& s2 Q
always @(posedge clk_500 or posedge rst)* `2 C8 e8 @7 S- }
begin
7 @9 j* M% W! z9 x3 `   if(rst)
/ o# X9 U* `( i5 H      begin
7 M/ W. P: R8 Z% O: L" z" h          RS <= 1'b0;                                       //复位:RS=0时为写指令;                       9 U( v' M4 s( h$ }6 Q+ E. d
          DB8 <= 8'b0;                                      //复位:使DB8总线输出全0    6 N1 H3 O/ f  ?' n6 a; F
    end
; F/ @! s7 r8 V* z8 ^% |7 S1 B   else  |# A. Z8 M# S* X
      begin                                 
' q8 @1 u8 m9 ?; E5 ^# H2 d9 g9 _                if(disp_count == 14)                        //disp_count等于14时表示第一行数据已写完& P% `+ k, c. t( g
                    begin
# I$ l# x# Z5 n" I3 E                        DB8 <= 8'b11000001;                 //送入写第二行的指令
! M6 Q* b; H# F: s: W1 i                        RS <= 1'b0;
  t5 I: e0 d6 F1 v# V                        disp_count <= 4'b0; ! ]9 I. f% v' L' t4 I
                        Data_Sec_Buf <= Data_Shift_Direction;, x( }% B+ {8 z! I" g
                        state <= Write_Data_Sec;         
* R) u6 l' z; }9 Y/ Y                    end
; m4 w. s0 N: t  k1 P                else" B# W! T' W- x) S
                    begin
4 L$ n3 X( `5 a3 h# u3 Z8 Z                        DB8 <= Data_Fir_Buf[111:104];/ P) F" Y2 P/ G  O; W
                        Data_Fir_Buf <= (Data_Fir_Buf << 8);# S( t& \8 v8 W) e
                        RS <= 1'b1;                         //RS=1表示写数据
3 A6 y- X$ T. F1 ]- A                        disp_count <= disp_count + 1'b1;
; B6 y0 w- w" ]5 n& U5 a) {9 d                        state <= Write_Data_Fir; - e- R) T+ @" ?! Y' ]5 @# s
                    end
" I+ d1 ^' v5 u      end
& q: R3 N% r4 R5 `, ]3 q. }2 Xend
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

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

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

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

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