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

减少关键信号的逻辑单元使用

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-6-1 16:00 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
减少关键信号的逻辑单元使用
; i* v% d  M9 ]2 [. V4 {4 b# y

; z( S) L" T# l; q
& ~8 O: Q" e" i7 |( g# R
1. 减少关键路径上的组合逻辑单元的技巧5 _4 ]$ x9 K3 P6 [
      在FPGA 中每条关键路径上的逻辑单元都会增加一定延时.因此,为了保证关键路径的时序能得到保证.设计时必须考虑关键路径上如何减少逻辑单元的使用. 下面举例说明这个问题:
' ^: I" ^& O1 S. e6 Z# n& O6 h$ M 如题: 输入信号a,b,c,critical ; 输出DOUT.  要求, c 和critical 同时为高,输出a, 其余情况输出b;: T8 Z$ a6 }4 o. e2 N2 g8 y
本设计中critical 信号很重要,要求输入输出的时延尽可能短!0 v9 t0 E! R1 k# J
第一种编程方法如下:2 ~' L" Q% G, d. G4 x' z
    LIBRARY IEEE;
" w+ k) `4 R  ]- w# V8 m! Y$ S- rUSE IEEE.STD_LOGIC_1164.ALL;
. |% o' M: D1 `/ f0 ?USE IEEE.STD_LOGIC_ARITH.ALL;
- p  C. f% ^% fUSE IEEE.STD_LOGIC_UNSIGNED.ALL;. d7 ?. Q: r" @
--LIBRARY ALTERA;
6 D$ ^  ]* a( Y) h7 q$ t" \5 O--USE ALTERA.MAXPLUS2.ALL;
# X; D, b6 V) I* ]9 ]$ C1 hLIBRARY LPM;
8 d- U+ T; \$ ~* A4 {8 VUSE LPM.LPM_COMPONENTS.ALL;, w3 N4 f( P2 k2 t6 Y5 e& ?
ENTITY Test  IS) j8 ]* j7 F+ e5 \
PORT
% R$ Z7 \' C" L- f! }/ R     (5 L; z( ~; a! d: `- @5 `" j5 e
       Clk : IN STD_LOGIC;
' _* I9 _& h/ p3 E0 M       Rst : IN STD_LOGIC;9 Q. c, ]3 @9 j+ d7 R8 i
       a,b,c: IN STD_LOGIC;
& n  H& ^3 s8 E3 [9 ~' A       Critical: IN STD_LOGIC;: v: u4 w5 n0 t) N# `: Q+ Q
      
/ |" X9 o# u: |       Dout    : OUT STD_LOGIC
$ d" s% E* f4 p8 ~, F- M+ n) T       );5 S: T2 u* b2 }8 ]$ W
END Test;3 \$ m* M; {: o7 X
ARCHITECTURE Arch_Test OF Test IS
% r& y4 ]5 R" KSIGNAL TEMP : STD_LOGIC;6 E3 C7 k: g- h+ W( g
BEGIN
7 Y) `5 ~0 D, j' B) B% zPROCESS(a,b,c,critical)
% `4 i( e% F2 \6 tBEGIN
3 U7 ]5 r" ]% z( n* c$ PIF ((C AND critical)='1') THEN
- b2 f* p: y% a     TEMP<=A;8 s( {, R. G5 v$ A
ELSE: Z# A5 u% K- D1 z' k7 J7 c
     TEMP<=B;
0 Y8 W3 ~. m% ^. R% h3 F* b! PEND IF;
& K$ U6 q8 @- M8 Y; ^END PROCESS;$ e# w. F, ^: s7 B  j& V
PROCESS(CLK,RST)
* r( @) T& y" ]5 PBEGIN1 j1 c& k6 W8 b6 I/ M2 s, m' @2 R: i
IF (RST='1') THEN
( Y/ \* \* l- r0 G0 f1 h   DOUT<='0';! r& h6 @4 ]3 z
ELSIF RISING_EDGE(CLK) THEN
+ \( {+ T  q0 o3 C; e   Dout<=temp;; J) C) Q$ i8 X, l$ o( Q
END IF;. }8 L  U7 A' L4 i! Y7 Z
END PROCESS;
0 }" \  B: @" j5 F# Q6 Y: g1 @- DEND ARCH_TEST;+ o6 U' P$ i" p  Q8 x, b
. V: d! f, E& i3 ^2 q) O% y( `# ^7 g
其逻辑硬件图如下:7 L) L- {' b( m* o" r
0 Q8 ]$ a" W2 G7 V" O
从上面图中可以看出, 该设计中, CRITICAL 信号经过两个组合逻辑延时, 和a,b,c 信号延时一样. 我们可以想想还有没有更好方法,让CRITICAL 信号延时更短.其实是有的, 见下面的第二种编程方法:6 \4 ?! d0 X. N# }  f- F% ^) |9 N# D# F  O
LIBRARY IEEE;* w/ h3 `; s2 w
USE IEEE.STD_LOGIC_1164.ALL;
9 @2 I8 n& l' O1 A0 JUSE IEEE.STD_LOGIC_ARITH.ALL;
3 C7 s/ r# D' @USE IEEE.STD_LOGIC_UNSIGNED.ALL;
" s+ V# c$ u9 h2 F- g3 M--LIBRARY ALTERA;
4 l8 u. `9 N! b5 J  r6 s--USE ALTERA.MAXPLUS2.ALL;
. \6 a+ U% K/ F& C0 ]) S( ^6 mLIBRARY LPM;  V2 x7 j: Y) X$ i9 W4 y! j( G
USE LPM.LPM_COMPONENTS.ALL;- t2 [. d0 b9 ]; R/ h
ENTITY Test  IS' k: J. Z3 M" {! K4 n0 K
PORT - _! o: M! z7 l4 k! k
     (
8 u( _* Z6 t; E% V  T       Clk : IN STD_LOGIC;( V; k' }" `% _1 A2 {
       Rst : IN STD_LOGIC;+ E% m: v5 z  b1 T
       a,b,c: IN STD_LOGIC;+ a) Z7 _' p5 I" Q( B7 B  O
       Critical: IN STD_LOGIC;
- S+ ]# [1 D+ G1 g7 i       2 D. |$ v. ^7 i) ~
       Dout    : OUT STD_LOGIC
9 j- i7 |( a- G       );
5 p( I+ G4 @( C* mEND Test;9 m1 P& _! g) u8 y3 B
ARCHITECTURE Arch_Test OF Test IS
( _; }# X. }1 n+ ASIGNAL TEMP,OUT_REG : STD_LOGIC;' S$ Q0 `2 X7 h: W- o/ C2 |2 a
BEGIN/ ^$ f1 q  }: o: f# E' d: D  f' e
PROCESS(a,b,c,critical)
  M: o( W3 P. u' t6 n' X  |5 vBEGIN
1 o: y3 I' {# w2 c4 y- E- P5 RIF ((C)='1') THEN
9 x* w+ Q9 }4 P6 u# F: i& j     TEMP<=A;
6 Q% k6 u1 S: r. a# XELSE
# t. j( R3 V  S' i! m     TEMP<=B;
. m* n; U9 g* {2 AEND IF;
! W9 i0 f% t! ~+ ]$ _: ^- F: KEND PROCESS;/ B$ z1 E- i+ f, a, {- k) l
PROCESS(critical)
1 H/ s& }* X8 _; i7 z  Y, T+ k, h! lBEGIN
9 ~. ^% {' q% L! xIF ((critical)='1') THEN% r+ ^% N( s9 c& v
     OUT_REG<=TEMP;4 H7 Z- }; r) |; e/ P
ELSE6 u* e5 y' ~$ F! n: b
     OUT_REG<=B;8 L! y& ?3 S  W+ n
END IF;
5 i2 X& j5 m6 y4 J" k2 fEND PROCESS;; Y# Q" K3 u2 \- c+ x
PROCESS(CLK,RST)
  y" I0 Q4 s( KBEGIN
) X6 i: Y9 l3 I2 Y& I5 P4 XIF (RST='1') THEN
. w0 u( R( @: M" x' x# Y   DOUT<='0';  \! j* l9 P; p( @
ELSIF RISING_EDGE(CLK) THEN
6 H4 ~" L$ P# I8 V& E/ W   Dout<=OUT_REG;
0 A( V# |! A' O; DEND IF;
- Z7 }) `$ U! U; U% w& K, ?) ^: r: I0 [END PROCESS;: t1 \3 {0 ~+ W
END ARCH_TEST;$ F- q' @- B2 H6 ^7 v9 s* k$ o; M  ~
0 I# i6 v* h' g" x( F. w; Y9 ?" {. h
其硬件逻辑图如下:
; B( h+ o3 ?5 C" L9 a. E1 U+ n0 v: A % m7 \5 |1 ?7 J5 E3 v
# R) ^# q9 y# R7 h+ \7 Y' i' U3 B+ u
) V* E2 q+ e, Y% l

' g. B" J1 Z- s! n- O1 C$ V& k% L  w& ]. U# u/ H
从上面的硬件图,可以看出,CRITICAL 的只经过一个组合逻辑延时, 更符合设计要求, 所以关键路径编程特别重要,需要仔细考虑设计技巧,任何时候保持硬件电路与程序对应,深刻理解硬件描述语言所描述的硬件电路!# R& [) X. n- I
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

EDA365公众号

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

GMT+8, 2025-8-4 12:52 , Processed in 0.140625 second(s), 26 queries , Gzip On.

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

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

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