Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

[問題求助] VHDL转verilog问题

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-12-29 14:16:18 | 只看該作者 回帖獎勵 |正序瀏覽 |閱讀模式
手里面有个VHDL写的FIFO,现在想转换成VERILOG的8 C5 U  l) m9 K  S% q
原代码如下
  1. , @7 D2 g* P6 Z& C3 S1 {( Y

  2. * ]0 l: t& M  f" p; ?
  3. CNT: process(CLR, WR_PTR, RD_PTR); ]  f6 T3 v( S
  4.   variable change : integer;  
    ( h& o! W$ w' k
  5. begin  + T, s$ T( V( V1 r
  6.   if CLR = '1' then
    " d6 D) L# o, u3 g1 c" n
  7.    count <= 0;
    8 d1 H' X8 ~  f& [. P5 y3 V; ]
  8.    change := 0;8 V, |- G4 _" |7 @7 \/ B
  9.   else
    , U; P& k* k4 T1 u' J! A: ]
  10.    change := 0;) s" ]; k% u/ h6 K6 u7 t) w
  11.    if WR_PTR'event then
    : G( x) r5 x- D4 {, t
  12.     change := 1;
    6 B& {4 b# o2 L% P/ Q, f
  13.    end if;7 g0 J- o- [6 X
  14.    if RD_PTR'event then
    / l3 I0 W/ s- Q9 k' q
  15.     change := change - 1;
    3 L  G) `' f+ Z' `
  16.    end if;
    ) y( A2 N' h1 m2 ^2 j0 @$ f
  17.    count <= count + change;6 f6 [) q; L& A
  18.   end if;* v. i0 h9 \, D) c9 I
  19. end process;
複製代碼
不知道改为Verilog该怎么写红色部分。2 b% p. P0 |8 y1 o
我想是用always@( WR_PTR)
# i* o% C; j! l, B; u" m但是process(CLR, WR_PTR, RD_PTR)这一句已经用了always了,没办法,刚接触verilog,请大家帮帮忙
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
7#
發表於 2009-7-4 00:42:31 | 只看該作者
印象中有个工具可以转vhdl 为 verilog,可以看看,或许有用
6#
 樓主| 發表於 2009-1-10 22:13:00 | 只看該作者
  1.         FWRITE: process (CLR, WCLK)
    . z* f( t) y+ J) u7 T/ X
  2.         begin" D8 D1 V. l5 K" v7 `5 R$ d1 h& Q
  3.                 if CLR = '1' then
    4 A% }5 _, p8 s5 t; P
  4.                         for INDEX in fmax downto 0 loop4 ~: u& V/ q) T
  5.                                 fifo_array(INDEX) <= (others => '0');
    ( {0 }8 U" e! V+ v7 t/ I
  6.                         end loop;. v& i! v1 u! j5 B* n
  7.                         WR_PTR <= 0;+ l; H. Q, ~6 d* I8 y9 f7 N7 @
  8.                 elsif rising_edge(WCLK) then
    : j: Z) C# X" \$ j4 Z
  9.                         if WE = '1' and count<depth then# B1 ~5 I. _% ?% G
  10.                                 fifo_array(WR_PTR) <= DATA;$ i3 q* b4 ?' f; \& J$ X
  11.                                 -- move pointer0 X5 M) a9 E  S8 J$ J( J
  12.                                 if WR_PTR=fmax then
    : o! }% C( B/ r% {0 Y8 D: p4 S0 x
  13.                                         WR_PTR <= 0; * Z9 Z, {/ L' {  X4 {, I# K
  14.                                 else WR_PTR <= WR_PTR + 1;
    2 P5 U+ q+ y5 z" }
  15.                                 end if;
    3 O6 I5 s& e' A( m) X, Y
  16.                         end if;
    / T2 G7 }6 M% z$ w) G( z* X
  17.                 end if;
    5 L  e& W" Q$ q& d# {
  18.         end process;
    " D/ T0 D' j5 |+ K! |3 o
  19.         FREAD: process (CLR, RCLK)8 Q! A( G8 V  ^  U; V+ G+ C
  20.         begin% s1 W8 k7 o- g
  21.                 if CLR = '1' then
    8 r7 [/ v3 n3 ~7 H. j) t! Y! v( P
  22.                         RD_PTR <= 0;
    - e) |) U+ Y0 U% {
  23.                 elsif falling_edge(RCLK) then
    6 h* o9 Y" S* ^; w. L# P  r
  24.                         if RE = '1' and count>0 then
    - }+ ^) z+ ~. a- T( f* z+ v  h
  25.                                 Q <= fifo_array(RD_PTR);
    3 {+ }1 w) j2 u4 V
  26.                                 -- move pointer   V# Y0 ?* Q  Y& S+ Q) c% K- l
  27.                                 if RD_PTR=fmax then
    " X$ K* x! |) \, W
  28.                                         RD_PTR <= 0; 9 |* `( Q. P: C# G
  29.                                 else RD_PTR <= RD_PTR + 1;
    ! j/ U) B  Q' M. a; e/ v
  30.                                 end if;
    3 x- v# c* {6 m0 B- ]- w, X
  31.                         end if;! m- o+ }) s& `# z9 X1 g
  32.                 end if;; g7 v( j* y$ {1 N% T4 Q
  33.         end process;( j9 Q, L8 {! \, c2 _0 z
  34. end architecture;
複製代碼
5#
 樓主| 發表於 2009-1-10 22:11:05 | 只看該作者
  1. ------------------------------------------------------------------------------------4 S/ v: Q7 h; H7 c; q
  2. library IEEE;
    $ r' z$ s3 `! `! `
  3. use IEEE.std_logic_1164.all;/ K7 ]! N  s3 h8 u6 g" N
  4. entity fifo is
    : @3 J/ W& |2 {# }
  5.         generic (# W# w5 {4 j' Y4 m' K: Z3 K6 g( f
  6.                 depth : positive := 16
    : x+ D; J5 P& U2 J0 `& O! y' h
  7.                 );       
    ' q5 ]9 ?4 z5 K
  8.         port(& s' q3 P# [6 ?! z
  9.                 CLR   : in  std_logic;5 _2 R" Z1 P" V, l
  10.                 WCLK  : in  std_logic;
    # D3 M+ j/ _9 M4 r  m8 e+ @
  11.                 WE    : in  std_logic;+ x* t0 C$ J! M6 s2 a  \9 s
  12.                 RCLK  : in  std_logic;
    1 G7 A4 w4 _' @. y7 B( p
  13.                 RE    : in  std_logic;
    " E; S2 D( b6 b- v# D
  14.                 DATA  : in  std_logic_vector(7 downto 0);5 w) I# U  r2 V$ N
  15.                 EMPTY : out std_logic;
    1 n1 c0 G1 @9 _; _* f
  16.                 FULL  : out std_logic;
    0 K- a+ x3 ~* I' i: I
  17.                 Q     : out std_logic_vector(7 downto 0)+ V/ o  x1 a0 V! _- e( W& ~6 G* H/ v
  18.         );5 c+ G5 T4 E/ i$ n
  19. end entity;0 u+ ~. y5 k2 {
  20. library IEEE;8 D/ r9 O7 U/ ?, y2 q7 K
  21. use IEEE.std_logic_unsigned.all;/ ]1 o* m" f1 @7 M9 G4 C
  22. architecture behavior of fifo is% T. C- f# k8 z, o! E6 E
  23.         constant fmax : positive := depth-1;        - \% G- C8 F/ \& }3 |: q
  24.         type fifo_array_type is array (fmax downto 0) of std_logic_vector(7 downto 0);
    6 P7 y0 X5 C6 B0 ^8 h& i- @
  25.         signal fifo_array : fifo_array_type;
    - \" p: x2 i* z; @
  26.         signal WR_PTR : INTEGER range 0 to fmax;) J3 ]( I& q6 u* n; f' I$ K
  27.         signal RD_PTR : INTEGER range 0 to fmax;
      [3 ]% R  {  J5 p* t4 ]
  28.         signal count  : INTEGER range 0 to depth;$ I" N6 G, M2 j9 M0 |
  29. begin0 P5 a9 w3 R, D% H
  30.         CNT: process(CLR, WR_PTR, RD_PTR)) m  p* d/ g3 i) f" i
  31.                 variable change : integer;               
    . `% u  A; i8 v  x& w- ]/ z# }
  32.         begin  
    - f" v$ @/ r1 f3 R5 N
  33.                 if CLR = '1' then
    # H. s" p* M# V. Q, k2 w
  34.                         count <= 0;4 |; [* r7 p  d& ^; q$ O7 @1 K, a
  35.                         change := 0;
      h1 D0 d/ w! q1 ~
  36.                 else9 d' O- a9 z! C0 h9 Q( ~% a
  37.                         change := 0;: o9 e+ q/ r& g3 H0 @( Z
  38.                         if WR_PTR'event then
    ! o3 H% x+ b8 H  `& F5 i) \
  39.                                 change := 1;
      `8 j6 o* B# {8 h" N* V; c
  40.                         end if;
    ) D2 ]8 S+ o/ n
  41.                         if RD_PTR'event then
    1 N. P7 ?1 c" e4 B
  42.                                 change := change - 1;5 C3 ?  Z5 H: @9 P
  43.                         end if;
    , Q6 V4 S: X; t
  44.                         count <= count + change;3 u- Z( q, Z4 \6 ^' ^( Q
  45.                 end if;
    % y7 i& p# _' ]4 D% \7 }. ?
  46.         end process;       
    1 n* c9 d: X0 I7 r  J. i
  47.         STATUS: process(count)
    " t, u7 G' }& G. h
  48.         begin  : y( V/ m' X# b  s" Q$ |2 O
  49.                 if count=0 then' c' a6 T) j/ R6 v
  50.                         FULL   <= '0';* L' N! b4 T/ y4 ]1 |
  51.                         EMPTY  <= '1';
    4 I# f* c6 a, o: o1 j; y; G4 h
  52.                 elsif count=depth  then  ^5 p7 L' V( _, u, c! d* a$ T
  53.                         FULL   <= '1'; 4 U8 D9 j" T) r) q6 t
  54.                         EMPTY  <= '0'; 1 w* v2 ^7 {: J( x
  55.                 else          }9 l- O% Z! @2 x0 H
  56.                         FULL   <= '0'; . s- A- ?; B/ ]6 A+ R2 W
  57.                         EMPTY  <= '0';
    8 e& g( g) i) ]3 v  e( C( m! k
  58.                 end if;                        ' V: T, H# R: L
  59.         end process;       
複製代碼
4#
發表於 2009-1-7 11:42:34 | 只看該作者
1. VHDL clock 語法好像不太對,應該是 if WR_PTR'event and WR_PRT='1' then5 Q* @' g) q2 M+ q; J% K
2. count 沒有clock!你可能需要把全部貼出來,看是不是漏掉了?! Y) I/ \8 s( q( D% V1 o
3. 一個process有兩個clock,一般不會這樣寫的。
3#
 樓主| 發表於 2009-1-6 16:31:33 | 只看該作者
这个FIFO程式有CLK的,我这里只是一部分代码,没有将所有代码贴出来,只是希望大家告诉我该怎么写if WR_PTR'event then
2#
發表於 2009-1-5 12:41:03 | 只看該作者
這個fifo程式有問題喔,沒有clock訊號,很奇怪.
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-15 04:16 AM , Processed in 0.114015 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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