Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 9598|回復: 6
打印 上一主題 下一主題

[問題求助] VHDL转verilog问题

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-12-29 14:16:18 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
手里面有个VHDL写的FIFO,现在想转换成VERILOG的
: v( h! n. x7 C4 S原代码如下
  1. / [' x7 c0 m, H& U5 R1 D

  2. ! b" S2 y: q* n8 b5 y9 Y/ y9 r" `) K
  3. CNT: process(CLR, WR_PTR, RD_PTR)6 E5 M6 \, @9 y6 [' j! Y  s2 h# e% B
  4.   variable change : integer;  
    / w( N- g: T) D1 v
  5. begin  
    5 L: ?" }+ a2 O: o: T
  6.   if CLR = '1' then4 r' @! ]& a# N3 `) p, T/ f0 M
  7.    count <= 0;
    8 K  o" g$ i1 Y" Q' T
  8.    change := 0;1 v' @, s2 P  o" k2 j+ V  T# U# C
  9.   else
    4 q* F/ \: L/ l" k* r. h
  10.    change := 0;
    , H8 h  u3 a) T* q. @& C8 P
  11.    if WR_PTR'event then7 L$ H5 D6 t3 K/ q6 v" O" G
  12.     change := 1;5 Q9 j' f: M: H
  13.    end if;
    & H* Z8 V* L' q6 _& ?  s: x. e1 w
  14.    if RD_PTR'event then$ |- D' F" v" {
  15.     change := change - 1;9 F  m3 z" ~" y2 B! B0 S
  16.    end if;; Y# r- t- U( ]6 U; ]& z
  17.    count <= count + change;
    - N+ C2 s3 F9 _( ]9 [  R
  18.   end if;
    " U5 M" e3 e5 V- A; h
  19. end process;
複製代碼
不知道改为Verilog该怎么写红色部分。
3 A& X: F3 @; \* d9 T' O' r9 Y我想是用always@( WR_PTR)5 P: b/ R4 y/ d5 v& O* ~4 u$ e7 ^
但是process(CLR, WR_PTR, RD_PTR)这一句已经用了always了,没办法,刚接触verilog,请大家帮帮忙
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2009-1-6 16:31:33 | 顯示全部樓層
这个FIFO程式有CLK的,我这里只是一部分代码,没有将所有代码贴出来,只是希望大家告诉我该怎么写if WR_PTR'event then
3#
 樓主| 發表於 2009-1-10 22:11:05 | 顯示全部樓層
  1. ------------------------------------------------------------------------------------
    " @3 U6 l% s7 p, _0 o
  2. library IEEE;
    - U! l$ q' }" v  l
  3. use IEEE.std_logic_1164.all;
    & e* \9 G: ?( B/ y4 h
  4. entity fifo is8 a3 p) @: P8 r5 l3 a: w  I
  5.         generic (
    % p' z) H: C! s9 y
  6.                 depth : positive := 16* u7 g, [( `8 ~5 |' m
  7.                 );       
    ! v: M+ A0 r& V+ Z2 o
  8.         port(
    ' Q' n2 J2 z. M8 f8 l
  9.                 CLR   : in  std_logic;, Q; i+ J2 R8 d3 w9 w
  10.                 WCLK  : in  std_logic;
    4 d8 H4 i7 t9 j0 b- P3 x! S
  11.                 WE    : in  std_logic;
    ; q4 b- p  m5 Y: L
  12.                 RCLK  : in  std_logic;
    * W' q$ V: \( o7 N
  13.                 RE    : in  std_logic;( n! j3 t$ {3 r8 d
  14.                 DATA  : in  std_logic_vector(7 downto 0);1 T4 C/ `' c5 d; C) V. R5 Y1 K
  15.                 EMPTY : out std_logic;
    * w/ J" o; A# i
  16.                 FULL  : out std_logic;
      a: U! H( l& }& X6 h$ h7 r; F
  17.                 Q     : out std_logic_vector(7 downto 0)  J& m6 j0 a( \& D* M1 J
  18.         );
    ( O' C* G. L; J; I! m7 Y% h5 r
  19. end entity;
    : q. w: n  ^& D5 e8 _
  20. library IEEE;
    1 U% `: A$ u4 i" r! i8 i( s8 f' H
  21. use IEEE.std_logic_unsigned.all;! x) I; H' a2 O: A
  22. architecture behavior of fifo is
    9 V* h/ V8 U9 b" I6 a7 i& O# @1 {
  23.         constant fmax : positive := depth-1;       
    & w  ?# }; u9 q
  24.         type fifo_array_type is array (fmax downto 0) of std_logic_vector(7 downto 0);
    9 V7 H* O/ n" F
  25.         signal fifo_array : fifo_array_type;
    1 ~- e4 ]5 G8 W; \
  26.         signal WR_PTR : INTEGER range 0 to fmax;, A/ ~, P3 y% f+ K9 [0 a  O
  27.         signal RD_PTR : INTEGER range 0 to fmax;
    ' v7 r3 J2 O: [5 c9 D/ T8 P
  28.         signal count  : INTEGER range 0 to depth;
    * _2 s2 V4 P9 o: ]$ P: D$ t
  29. begin% m/ U' b5 k! i( v# i
  30.         CNT: process(CLR, WR_PTR, RD_PTR)
      h9 x" S# }) t! m5 s+ R/ }
  31.                 variable change : integer;                * u  T/ F. L/ I: q2 j
  32.         begin  . F3 r# T6 p# F0 L6 d( r- J) I( Z  t3 k6 M
  33.                 if CLR = '1' then* S/ [: P0 @! M" y. Z* }( _
  34.                         count <= 0;
    " x, h) a' [  O: X! c5 m9 S, Z
  35.                         change := 0;
    5 X& u: s: t$ ^' \5 H. |, v5 R7 t" C
  36.                 else
    5 W  O' Z7 T& r4 M( l
  37.                         change := 0;" e: w$ Z& d1 g4 Q
  38.                         if WR_PTR'event then7 s" Q, ^0 V* |- m1 A
  39.                                 change := 1;9 r8 C( L7 E' h4 R
  40.                         end if;
    ) L0 S* O, U+ R0 E% w
  41.                         if RD_PTR'event then
    , w, m0 `% u: Q1 _% k  l$ h4 ]
  42.                                 change := change - 1;
    % J' W. f. `9 D& w; S: U
  43.                         end if;
    , M! @& d( p. L0 [
  44.                         count <= count + change;
    % B# D5 s4 f& L  W
  45.                 end if;
    ' Q& B( _0 B0 @, @6 c
  46.         end process;          l1 {8 t* j' c6 U
  47.         STATUS: process(count)
      t8 U, q7 H0 u" K
  48.         begin  
    2 D/ I* m( s; f  ?4 E
  49.                 if count=0 then/ r" m, W. {- R0 ~
  50.                         FULL   <= '0';4 D$ I6 S5 E. R: c2 i* d* G
  51.                         EMPTY  <= '1';  _1 |( _$ W% o, L
  52.                 elsif count=depth  then1 b: t$ {# b7 F9 R( `; r% `! H
  53.                         FULL   <= '1'; / k- F6 T: Y( S& o
  54.                         EMPTY  <= '0';
    1 Z5 r! B* _! W+ e" Q
  55.                 else        , B) \; v9 e: H5 `1 m
  56.                         FULL   <= '0';
    8 X, R! X3 s* \' L& d
  57.                         EMPTY  <= '0';
    , |% `' O% f* Z! x6 c  Y; e
  58.                 end if;                       
    + G. M" e8 B( v' a3 f$ K3 k
  59.         end process;       
複製代碼
4#
 樓主| 發表於 2009-1-10 22:13:00 | 顯示全部樓層
  1.         FWRITE: process (CLR, WCLK)& Z& e4 e3 E1 q
  2.         begin
    - h. x8 @& {: R$ F7 `' G5 }
  3.                 if CLR = '1' then" z( p) @$ k9 v
  4.                         for INDEX in fmax downto 0 loop
    . m5 U# g, a& ^
  5.                                 fifo_array(INDEX) <= (others => '0');5 N) \) t2 J" Q/ k4 y
  6.                         end loop;
    % {( \$ B$ g' [' O  W
  7.                         WR_PTR <= 0;
    " d# Y1 `2 P  M, [5 S& @
  8.                 elsif rising_edge(WCLK) then
    ( w* m( E7 z; m8 B" Z  j+ w
  9.                         if WE = '1' and count<depth then; Y2 A) [# u, V0 i5 V1 E% ]
  10.                                 fifo_array(WR_PTR) <= DATA;
    . Q: V# |9 n% \1 M3 O0 n/ w
  11.                                 -- move pointer8 H, N: P* k7 |6 e, C6 j
  12.                                 if WR_PTR=fmax then
    6 g5 G! f" R2 G5 @3 x! K. H
  13.                                         WR_PTR <= 0; & S4 x, Z- \( n& n/ \9 l7 ]
  14.                                 else WR_PTR <= WR_PTR + 1;9 p& ~% f3 I; t: B: b( H# c+ h
  15.                                 end if;
    : u  ]" `9 x1 |4 P% \8 X
  16.                         end if;7 D1 h7 _. p' s, j6 ~1 j; Y" K
  17.                 end if;
    2 P9 B% _0 P# _# e6 h: Q# U. H6 k; w
  18.         end process;  {$ I+ w. E; U& N8 F" u& ~
  19.         FREAD: process (CLR, RCLK)
    ) C# y4 O5 @+ d  y& s( U
  20.         begin
    . w# m+ n5 h5 i0 D
  21.                 if CLR = '1' then
    " [3 d5 ?- p: n% T
  22.                         RD_PTR <= 0;6 f. Q3 I, v) N# `
  23.                 elsif falling_edge(RCLK) then7 ~& o; j9 [, V  [- E$ M
  24.                         if RE = '1' and count>0 then" ?6 I% |/ G2 a' u
  25.                                 Q <= fifo_array(RD_PTR);/ {# [( M3 [1 Z& M' H3 x8 b
  26.                                 -- move pointer
    ' J6 w$ c) u% d! N- ]
  27.                                 if RD_PTR=fmax then 6 w. p# U/ A  \/ K# l
  28.                                         RD_PTR <= 0;
    . c+ m9 G0 D" B  g$ D
  29.                                 else RD_PTR <= RD_PTR + 1;
    ! c7 P/ S5 q4 z2 H# J# l, P
  30.                                 end if;
    5 `2 G7 T) x7 Q- M( r" W: }/ U. |
  31.                         end if;
    - B* |/ |: R. y$ w, P: t/ j
  32.                 end if;
    - E, F3 a) z+ @, M1 i4 f7 C
  33.         end process;
    2 Y3 H  _! T1 d& I: M1 h* M
  34. end architecture;
複製代碼
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-5-14 04:13 PM , Processed in 0.177522 second(s), 17 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表