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

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

[复制链接]

该用户从未签到

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

EDA365欢迎您登录!

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

x
我在用Verilong代码做液晶显示时。有一个不能更新的寄存器数据类型的问题,现请教下各位大虾。
7 w% g  t+ S% L" G0 [9 b9 l! l* A过程如下:我使用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”。即初始化时所赋的值。
7 c7 I$ Z/ W' {6 s; r5 h然后我想是不是时钟的问题。因为两段并行代码一个是48M的时钟,而另一个则是500Hz的时钟。但觉得这没有道理。因为pro_signal信号的变化我自己可以随时控制,让pro_signal信号变化就变化,不变化就不变化。只要pro_signal信号不变化的时候,那么Data_Shift_Direction的数据也不再变化。即使后面一段代码是500Hz触发的,也应该能够检测到Data_Shift_Direction里面的数据。不知道哪位大虾碰到过这种情况没。有的话,请一起来讨论讨论下吧。8 M% q3 i$ P7 U/ f' d
3 \9 H8 A( L3 r8 U. Q
现把这部分代码粘贴如下:
% f& \, Q$ x! c' K& r4 Hparameter   Data_First = "This is an App",                //液晶显示的第一行的数据. D& A9 K- X# A0 K; }% e7 I
            Data_R_U = "Shift Ri or Up",                      //液晶显示的第二行的数据, S1 j- ^$ Y% f$ H: p
            Data_B_RB = "Shift Be or RB",               
( s' P2 H) K0 T, Y# f* B            Data_L_LU = "Shift L or LUp",
) E; W/ p7 S! j3 c# u            Data_LB = "Shift Left_bel",% d) w& b0 `$ w. R4 X0 o! i7 f% }* ?
            Data_L_Button = "You Left click",; k) A4 P$ u; r
            Data_R_Button = "You Righ click",
7 z5 A& ]; M' J1 c# G) e5 p8 s  Q& i            Data_Static = "Mouse's silent";
2 S& O0 l. o9 d4 T/ ~! ?: Z5 B8 R6 ~, B' x* a3 u) J
always@(posedge clk_48m or posedge rst); A/ p" I$ |" a8 s; T
begin5 {: o) ?; a; p  ~9 I5 I9 [
    if(rst)* [2 I  }5 a& [9 ]' [
        begin
* e& B' I: V* |2 e, K4 }            Data_Shift_Direction <= Data_Static;2 V6 k7 Z; N, @" I' c
                    test_signal <= 3'b000;* I7 w. u! c* C" \) w
        end
2 ?' a8 p: J. i9 C; v/ G    else
$ `! n+ G& e% [# p5 E        begin+ \( e5 ~7 r9 ]" Q1 o
            if(pro_signal == 4'b0001)   //LED1 light" \' }& N5 ~& l( Q3 P6 }  p
                begin- K% v, a% p0 }
                    Data_Shift_Direction <= Data_R_U;/ P; \9 S9 b1 e+ Q! g" _) I7 v$ \0 k
                    test_signal <= 3'b001;! m) B- z' j0 z. V  S  x
                end
- M0 ?! a4 W' C. x3 `            else if(pro_signal == 4'b0010)  //LED2 light
# M& ?" k2 M% I+ ~' D6 k0 v                begin/ |3 N' I3 d$ T( R) Q
                    Data_Shift_Direction <= Data_L_Button;6 t1 A; `9 \/ B
                    test_signal <= 3'b010;
* K: E1 d; G1 y1 {" Q                end
* f" P6 _2 v; x! B* ~* \3 [6 E            else if(pro_signal == 4'b0011)  
' t& U$ s. C% v6 c8 P                begin- x7 a, Y) \. ~8 D/ O
                    Data_Shift_Direction <= Data_R_Button;$ {3 O, M0 g% P9 j+ l
                    test_signal <= 3'b011;
+ R; n0 w3 \4 g7 J6 ]3 _( f                end  \9 V+ u8 L: l( Q/ L, y
            else if(pro_signal == 4'b0100)  //LED3 light
( u- ~2 k' \+ A+ A: V5 R                begin2 U/ p$ `8 T& b! f: v
                    Data_Shift_Direction <= Data_L_LU;. d* z' H0 c& Z1 H
                    test_signal <= 3'b100;
; v9 [- ]/ ]- d" |# G' g                end# s- X9 g6 h+ M0 o: Z- a% f; {
            else if(pro_signal == 4'b0101)  //LED4 light, n# E! K# L2 x9 }4 a1 }
                begin$ M: T" m' Y% C+ X7 d0 \. w
                    Data_Shift_Direction <= Data_B_RB;: R. F2 Z: `' t* t+ z
                    test_signal <= 3'b101;, a) |/ d. ]: ^
                end                                                           
0 R; a9 l+ I0 j            else if(pro_signal == 4'b0110)  //LED5 light
6 b) E" J6 L. W1 N' I                begin
/ ~( k& B' v0 N2 I  B8 T9 Y                    Data_Shift_Direction <= Data_LB;
2 Q$ W8 H: z! V0 o                    test_signal <= 3'b110;6 C2 }& E$ ]! C7 o7 E
                end
! h+ ^) |% H, w. y: z# J            
1 W; E3 i) N& b# O3 Y( {            else
" X  P+ K# a* f# }; E                begin
: Q! ^. }- i" v4 W' z                    Data_Shift_Direction <= Data_Static;
8 \# y+ m' {' c: c0 ?! w                    test_signal <= 3'b000;% l2 w6 Y4 R- J+ a( x  _& l
                end# v, V- k! v8 f2 t# ~( x! U2 ~
            
# J( M; z$ T6 S/ y3 V' d9 G; p        end7 x, G& O& N  k8 B- `
end
6 W: @0 J0 L) U- v5 W
) A3 _2 `6 D0 G: ], T- O( f5 Palways @(posedge clk_500 or posedge rst)
. Q4 a4 E) [& zbegin: y  Y7 H, }3 v% U7 W& F: O$ k
   if(rst)
+ g* d7 N& E  m      begin
) }4 m9 e. J% m0 K# L          RS <= 1'b0;                                       //复位:RS=0时为写指令;                       2 Y8 d& w: M6 v8 G; t& s! s* T
          DB8 <= 8'b0;                                      //复位:使DB8总线输出全0   
: R5 u& I  K: h* w; ^    end
, \# y4 r6 i0 x( g: c   else
" ^6 v$ l, w5 ~      begin                                 % `" G* Q. q! m; s( ]5 D& F
                if(disp_count == 14)                        //disp_count等于14时表示第一行数据已写完5 l' l/ b2 ]# s! k* O
                    begin3 S1 ^$ E) z! y
                        DB8 <= 8'b11000001;                 //送入写第二行的指令
. F2 U1 |9 n) o- ~! j* f                        RS <= 1'b0;
3 `$ ]7 N9 Y4 j0 J/ o                        disp_count <= 4'b0;
) D6 V7 f1 j" T# y9 ^                        Data_Sec_Buf <= Data_Shift_Direction;- A* @7 H3 `, z% Y- X
                        state <= Write_Data_Sec;         
' y: B) }9 o0 g: l) u$ q                    end% a! @5 X, M( M
                else& W  q" p  T+ |9 d
                    begin
* S0 `# T1 s9 {3 I                        DB8 <= Data_Fir_Buf[111:104];: {( Z" s0 \  L9 Q+ j
                        Data_Fir_Buf <= (Data_Fir_Buf << 8);4 ^0 F) W, A: e6 x3 W: t0 A; @
                        RS <= 1'b1;                         //RS=1表示写数据
: W$ G, R7 e1 x( e' G                        disp_count <= disp_count + 1'b1;
, g9 f1 V% R! j; S4 e& M                        state <= Write_Data_Fir;
1 j7 D7 t7 R7 P$ P/ D1 Y                    end5 b; v/ w  c# z9 Y. W- F5 p/ m
      end
5 \2 j$ Q6 h" v( @+ K  pend
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-24 10:22 , Processed in 0.140625 second(s), 24 queries , Gzip On.

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

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

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