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

VHDL数据类型与数据类型转换

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-5-29 07:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
VHDL数据类型与数据类型转换# O3 _$ D9 k3 a8 l5 B" d

; o# J' Y+ |4 m; qA.        标准数据类型- X9 |  b% I3 Z" j$ e7 L
1)        整数类型(INTEGER)! N  h1 W% u, T' M4 Z; a
    VARIBLE A: INTEGER RANGE -128 TO 128, w% e, A% ^/ |" N% S6 I; R
    范围       -(231-1) ~ -(231-1)2 B3 b4 [1 v7 N8 x( i8 j% W
    2#11111111#           --binary, =255D3 _& _2 D) x7 k7 p9 r( H( N
    8#377#
% F+ o' H6 ^7 v, ^    16#FF#, L) e6 N$ c$ [/ }
2)        实数类型和浮点类型(REAL & FLOATING)
) K5 j: G6 T$ `$ s5 x9 N% c: J    实数范围    -1.0E+38 ~ +1.0E+38
# s" f  ]3 y1 W" U% x+ @    大多数EDA工具不支持浮点类型# s- l0 p$ \0 d0 s
    16#0F#E+0
' M% j" ~0 F2 F$ |6 o1 ^. Q4 V    16#FF.FF#E-1+ |6 |8 U* V7 E7 D( r
3)        位类型(BIT)
% u5 W6 X, H& O& m& c0 h3 P    TYPE BIT IS  (‘0’, ‘1’)2 U) I  M: k. `9 Y, H, Y5 L
4)        位矢量类型(BIT_VECTOR)$ }. s, u7 ]3 M( l0 W0 x
    B”1111-1100”         --长度为8
+ [7 \4 ]% u  a$ E, o    X”FBC”                --长度为12, =B”1111-1011-1100”
5 p# M5 l3 a# S    O”371”                 --长度为9,  =B”011-111-001”
& K% S, y6 }3 h5)        布尔类型(BOOLEAN)1 z6 Q% h, a& d0 D" Z
6)        字符类型(CHARACTER)! z% @0 y  X4 C) Y" t
    ‘A’, ‘a’, ‘B’,   大小写不敏感。- n1 E% ]3 }% x0 d& [5 R
7)        字符串类型(TRING)' e5 G+ y9 s1 d; @: W: J
    “VHDL”, “MULTI_SCREEN”7 r# M: ]7 Y  Q4 C6 |
8)        物理类型(physical)4 O$ L4 `) s! H( R2 g
--时间类型0 O! Q) \6 d. L4 w: I3 Z- `
--The physics unit time is a predefined type
& L3 N4 T& _  X( n" _1 S" r    TYPE time IS RANGE -1E18 TO 1E18
* I  ^- e7 q; Q0 f       UNITS5 k: \" m% p8 Y9 `
            fs;                        -- Femto-second1 Z8 W0 t* I( C4 }3 a# ^; K
            ps = 1000 fs;( Z) e4 j' @. f$ J) d7 r: k
            ns = 1000 ps;
( X9 C# ?6 ?8 i3 m) I+ f            us = 1000 ns;1 A) U3 }8 J) q; I( ~
            ms = 1000 us;
0 s" t3 O$ V$ K* \3 ^6 R+ s  ^: x            sec = 1000ms;
, z- Q1 [4 |0 k5 \! x2 r, U            min = 60 sec;! N6 i  G5 Q. }6 h/ F
       END UNITS9 m3 L% m' R6 N! k: C" `

% f8 Y. s8 T8 y( x+ H( e8 d--another1 O$ k/ L: b* y2 `1 q2 q
--DISTANCE TYPE* _# e  W1 x4 Y( X# j3 q
    TYPE distance IS RANGE 0 TO 1E16$ j/ B" Q( C0 N& D5 G& |
        UNITS
/ u/ Z3 p/ @3 y6 V' ^: d: N' M5 ?            A;+ M, N3 Z! m1 h; ?) M. T
            nm = 10A;
: L2 ]' {5 P4 N: \1 {            um = 1000nm;* R& y# ~* O: r. M8 t) L
            mm = 1000um;1 C! V, F& c6 e3 }* `
            cm = 10mm;: O" V3 ?8 p0 S' `
            m = 1000 mm;+ o9 B+ v; l2 l3 [  D
            km = 1000m;+ o2 Z/ W2 M7 t$ U: }$ `6 W
        END UNITS;
0 S0 c7 s' l3 ~8 i4 r, D9)        错误类型(NOTE,WARNING,ERROR,FAILURE)* Z5 \2 H+ z9 O, x! m. f( F
10)     自然数、正整数类型(NATURAL & POSITIVE)
/ p  l. l6 x# Y2 E% GENTITY_compare IS, t: ?, Z6 Z: L: t: r; Q" y
   PORT (a, b: INTEGER RANGE 0 to 9:=0;
1 y) K% l1 l; w/ @3 y  }         c: out Boolean);
' t# H9 L5 q# G' n; h* z$ B! v! qEND compare;( ^/ n1 Y. j# C* F- O+ k: m0 o
B.        自定义数据类型
6 O) P+ Z$ u* M1)        枚举类型(ENUMERATED)
* y7 a5 X2 v" z  Q. ~( S: t5 ^7 P    TYPE PCI_BUSstate IS
4 R5 j) V; c& w  |$ ~; g1 P0 G% [    (Idle, busbusy, write, read, Back off);  --PCI总线状态机变量8 U3 x/ M1 n/ V/ l- R' g1 n  X5 s
0 s$ `/ k1 H1 ~1 V1 Z
    TYPE std_ulogic IS6 |" f4 W8 F- Y
    (’U’, ‘X’, ‘1’, ‘0’, ‘Z’, ‘W’, ‘L’, ‘H’, ‘-‘);
7 c  N3 B4 Y0 k/ p" L8 ?  a& e# G+ t
    TYPE boolean IS (false, true);
7 V& i# t1 q) R: E& h) K* B- f( ^9 z/ Q4 ^' G6 W
    TYPE BIT IS (‘0’, ‘1’);
) X- Z! j1 T6 n. t# n0 e2)        整数类型(INTEGER)
9 J( R( w* }7 N$ Q' v" D    TYPE digit IS INTEGER RANGE -128 TO 128( d, _6 G! [7 D4 @; G
3)        实数类型和浮点类型(REAL & FLOATING)6 ^! y! M5 Y* X0 g! O" H
4)        数组类型(ARRAY)
8 n" `, d7 d* h' _1 I( W! I    TYPE MYARRAY IS ARRAY (INTEGER 0 TO 9) OF STD_LOGIC1 I9 G! C1 V# [* s2 b8 \# F$ [
5)        存取类型(ACCESS)
5 a% C4 u; H2 f8 N- b    TYPE line IS ACCESS string;       --Line是指向字符串的指针
" S$ g9 c+ h6 G8 C7 e8 M6)        文件类型(FILES)
" }6 `: l  Y8 D7 q9 b" a    TYPE text IS FILE OF string;
$ Y% t) j2 W  R. q    TYPE input-type IS FILE OF character;
8 N# B* |) [& f( k4 v( V7)        记录类型(RECODE)* k/ i0 D: O4 W
    --RECORD适于描写总线,通讯协议; I& r: G9 Z# H# M4 L2 Z
    TYPE PCI_BUS IS RECORD1 c* _$ `7 p+ z1 Y% a) u
        ADDR: STD_LOCIG_VECTOR(31 DOWNTO 0);
) P- E9 X* F0 \; Z" r9 b4 s8 C        DATA: STD_LOGIC_VECTOR(31 DOWNTO 0);% [9 O( l, _9 j5 Y
    END RECORD;
2 E" C8 m7 v6 M    SEGINAL DECODE1, DECODE2: PCI_BUS;& O1 l# X% V( @4 I/ J* n/ O
    PCI_DEVICE1 <= DECODE1.ADDR;
3 e. s# c7 W7 e% P+ V# H    PCI_DEVICE1RAM <= DECODE1.DATA;2 `- E7 o( @" f( M
8)        时间类型(TIME)+ `& n) ]% ?3 P0 k* ~
类型转换( s  C) t. u/ ?3 J! p5 I
A.        类型标记法
7 s6 N0 X5 B2 _! ?# Y  Z3 _Variable I: integer;
" L6 z0 L7 m6 u  Y7 \' sVariable R: real;
6 c4 ]( V" i0 O" LI: = integer(r);
- ^. z7 ]1 b3 Z: M% o# f; i8 BR:= real(i);* a% E  Y( n# m. }( }0 b1 n
其他还有 NUMERIC_BIT中SIGNED、UNSIGNED 同 BIT_VECTOR间的转换。
3 c8 L" O9 p0 W  U7 y* s' MUNMERIC_STD 中 SIGNED、UNSIGNED 同 STD_LOGIC_VECTOR 间的转换。
: b2 Z( B$ Z& `B.        函数转换法
: {8 t& a$ a8 k* `' z+ FStd_logic_arith程序包中:
0 [) w, i9 W5 X$ q       COMV_STD_LOGIC_VECTOR(A,位长); --interger, signed, unsigned -> std_logic_vector% u* u( K$ h1 ~; L- r  k% z
       CONV-INTERGER(A);                                     --signed, unsigned -> std_logic_vector, L- i, J$ K  M& ^) y' c6 [
       CONV-INTERGER(A);                                     --signed, unsigned -> integer) m+ t' y4 S$ H. y
Std_logic_unsigned程序包中:
2 G0 M3 l& |5 K/ w5 ?9 w& z       CONV-INTEGER(A);                                       --STD_LOGIC_VECTOR -> INTEGER4 y0 T7 j. t* y5 w9 M7 x) \. L
C.        常数实现
( z- c* L. A+ M( ~) nCONTSTANT TYPECONV-CON: typeconv_type := (‘0’|’L’ => ‘0’, ‘1’|’H’=>’1’);) W2 ?  P! R9 k3 R
SIGNAL B: BIT;( M% v, l7 m& {: N  u
SIGNAL S: STD_LOGIC;
# _4 o1 W4 c3 i+ _, Q- \BIGIN
4 b) n% r+ O. g% e4 T       B <= TYPECONV-CON(S);
4 n6 H* i9 t: A$ w( K! BEND;
8 B8 U$ o" y+ H
0 _/ _7 {* C% ?数据类型的限定
8 g% x& N. F1 E" I& @& G' t       A<= std_logic_vector(“01101001”);            --数据前加上类型名  I8 X- l' n3 k' N( }' I' K
       SUBTYPE std3bit is STD_LOGIC_VECTOR (0 to 2);
6 C4 Y7 d; Q3 F/ H: [, S% S0 T3 |
( o- s( n7 U3 x- X! H
" Y8 p' u# v2 z; e6 r

该用户从未签到

2#
发表于 2019-5-29 18:02 | 只看该作者
最近正在找这方面的资料 谢谢楼主分享
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-10-9 20:36 , Processed in 0.140625 second(s), 23 queries , Gzip On.

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

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

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