电子产业一站式赋能平台

PCB联盟网

搜索
查看: 4143|回复: 11
收起左侧

求助帖 求大神帮我看看这个要怎么仿真?

[复制链接]

585

主题

910

帖子

4977

积分

四级会员

Rank: 4

积分
4977
发表于 2022-7-18 15:06:53 | 显示全部楼层 |阅读模式
library ieee;
8 y+ S3 t# g' ~4 t+ Vuse ieee.std_logic_1164.all;
  U' K5 T- T' \7 X1 G9 X: ause ieee.std_logic_unsigned.all;
) F1 x2 |9 {% d  c1 y* v' T3 k4 M0 Ientity taxi is
* M5 [9 ~  D- O2 T- w4 A. p! w$ rport(clk:in std_logic;
' T4 }) R( [: g# Y' P       start:in std_logic;
! e, G' Y9 P3 _7 X: L/ s  t2 s       stop:in std_logic;4 J+ h0 K0 X5 D, f4 I: l, K  N. ^
       pause:in std_logic;
4 `- b: @' g  g$ q7 B/ F. f       speedup:in std_logic_vector(1 downto 0);6 E% }' G3 P& d  O2 o
       money:out integer range 0 to 8000;
7 X6 q' S$ o8 C8 j9 Q5 ?       distance:out integer range 0 to 8000);
& k6 o; f. L0 G- n: b# z# Xend;
5 S! V- \( Q; X) j2 \# ]' I3 Parchitecture one of taxi is" f( F5 J7 U9 w/ K% Q9 F
begin/ z! j2 X8 l; f; s
process(clk,start,stop,pause,speedup)
8 ]6 X3 H* I' o/ @+ X     variable money_reg,distance_reg:integer range 0 to 8000;
! Y9 N5 \+ \! f, }' [+ |6 R     variable num:integer range 0 to 9;
6 t0 b: h2 ?3 t     variable dis:integer range 0 to 100;
) @' ?$ R' B- W5 I$ S: b" d     variable d:std_logic;  J7 w2 I( l. w  F1 y
begin
# N1 b; v" A$ l5 Q" K' Cif stop='1'then, f" m  J$ Y" ?! u+ _+ M/ L
      money_reg:=0;4 J+ W1 B4 y; X* x
      distance_reg:=0;
( Z) f4 P% Z8 E      dis:=0;$ P! Q9 Q# v( y- M( L
      num:=0;$ k5 t$ O7 b" ]- N
elsif start='1'then
1 f4 M4 ]3 M" a& J/ j9 N; b      money_reg:=600;
! o2 C' m( a' E8 x7 C/ v/ v, K      distance_reg:=0;
  g% J0 H: e5 L      dis:=0;+ D* W8 x5 @" C. N
      num:=0;& M6 M2 Q, l1 M$ E0 |& i3 Q* a8 |
elsif clk'event and clk='1'then: N0 U. Z  r! J# `  v
       if start='0'and speedup="00"and pause='0'  and stop='0'then
. {/ [$ _) l+ K6 f            if num=9 then
' u# z+ T% S/ ]                 num:=0;6 H) g2 O3 L/ w2 m) K1 j
                 distance_reg:=distance_reg+1;
1 [1 j6 I  e& {: a& V$ X$ {3 C                 dis:=dis+1;: Z( u/ V" [" w  x" E" T" o
              else num:=num+1;
# j/ e; Z0 C- \8 g! u" i2 v7 v! b              end if;& y& L1 I7 u2 }4 L5 P+ @5 C/ f- z
elsif start='0'and speedup="01"and pause='0'and stop='0'then
# R8 e& F0 X2 C! Y   if num=9 then4 |' [2 A% ~+ D. R9 {. v: \( b
        num:=0;6 P. {- G1 _4 C
        distance_reg:=distance_reg+2;
. _2 T* z. R3 `7 C        dis:=dis+2;
$ @" S1 p# b( a" O4 _* R      else num:=num+1;
4 ^" U, \) |( B; J% C( e2 K7 W: T  `      end if;6 }6 a+ W) `) a, L0 H6 ?
elsif start='0'and speedup="10"and pause='0'and stop='0'then2 W5 {" y* P0 C5 x" f+ C
    if num=9 then
! N, `! e6 `$ H9 Q" N2 c/ V        num:=0;$ w# G% {$ }5 O! [7 l1 q
         distance_reg:=distance_reg+5;
; f" e+ Y0 O4 Z5 Z/ d8 l/ i         dis:=dis+5;1 \$ D) n& S: z9 b4 D
    else num:=num+1;$ W0 s( P3 o3 U. F6 A
    end if;- V3 \- L3 W% S6 r. c3 n4 Y: F, e' R
elsif start='0'and speedup="11"and pause='0'and stop='0'then3 |7 I( d  E$ V8 a4 j9 C/ v* `
           distance_reg:=distance_reg+1;
* Y; D. y: o  ^- c          dis:=dis+1;
& \# @6 K- r" Z  Q+ K' wend if;
' q5 T1 \4 A$ f2 sif dis>=100then
) Y) m2 D) o# O! k* k* |         d:='1';4 x& n- x- d6 r* K' Y3 V
         dis:=0;8 x$ n( a5 t, T2 @& z5 F
      else d:='0';
( S# O* s/ o4 H8 }' Q* R4 F$ C! \end if;6 l7 ]: [! p2 e- v8 M! O8 {
if distance_reg>=300 then
( J# @' r( f0 V" q) ^3 K) B       if money_reg<2000and d='1'then. y' q3 l) Y# y/ s  Q) ~$ G
                money_reg:=money_reg+120;
6 J  w* o4 r7 O! C/ r! d( C$ ?1 d       elsif money_reg>=2000 and d='1'then* ^7 W/ G  P) s  G- M. B7 h1 T
             money_reg:=money_reg+180;
- m2 {# a$ @! L5 h9 e$ m       end if;
  [" Z6 n# p) S0 r' G3 Y8 K    end if;
* ~+ y/ R1 r4 c5 ?end if;- F) ^" P+ j- q- v/ L5 f
    money<=money_reg;8 }6 s7 Y) h2 h0 Q8 Q  l
    distance<=distance_reg;
5 O- {1 I' p3 l9 Jend process;" |. h8 `4 m9 ]( P0 `
end;) _) R; b3 `) @3 x  S+ Y
程序是这样的,
回复

使用道具 举报

589

主题

924

帖子

4975

积分

四级会员

Rank: 4

积分
4975
发表于 2022-7-18 15:07:14 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

578

主题

858

帖子

4821

积分

四级会员

Rank: 4

积分
4821
发表于 2022-7-18 15:07:36 | 显示全部楼层
到仿真这里我实在是不知道要在每个输入和输出端口上面添加什么信号,哪位大神可以帮我看看
回复 支持 反对

使用道具 举报

579

主题

911

帖子

5007

积分

四级会员

Rank: 4

积分
5007
发表于 2022-7-18 15:08:19 | 显示全部楼层
library ieee;1 d9 Y7 S4 t( }/ y; m. t* c
use ieee.std_logic_1164.all;
& |7 l3 x0 K& T) \. J. e- f0 |use ieee.std_logic_unsigned.all;
9 |. W3 l3 P! W. O' w0 Zentity decoder is
& b& ~1 @+ G2 \! ^port(clk20mhz:in std_logic;0 U: o, c7 C) D& W3 y* g" i$ p4 m
      money_in:in integer range 0to 8000;
, X* }' e% a. H7 Z8 I# T# idistance_in:in integer range 0 to 8000;* V! _9 W+ q" n0 |7 A
scan:out std_logic_vector(7 downto 0);% _2 E/ B6 }$ m, U/ q
seg7:out std_logic_vector(6 downto 0);9 B% l/ s2 ]$ b$ {$ k
dp:out std_logic);! `3 G( p$ l: o
end;
" b1 X( x8 Q2 d7 |  |( {" [architecture one of decoder is: X0 [3 X" I& r' }
signal clk1khz:std_logic;! N) E" S4 S; R2 ^+ F
signal data:std_logic_vector(3 downto 0); - Z6 F, d. Q* g7 e) s* |3 k8 ]! Z
signal m_one,m_ten,m_hun,m_tho:std_logic_vector(3 downto 0 );  T" U$ Y& \" C3 q
signal d_one,d_ten,d_hun,d_tho:std_logic_vector(3 downto 0);
# E1 K+ i0 v) ~6 i% w$ h7 |5 Sbegin- Q7 A1 G' c! u
process(clk20mhz)
  }+ N2 q: W6 kvariable count:integer range 0 to 9999;, W$ S; q$ d; C4 X( N3 }& z
begin
/ c" N2 K3 h* u8 Nif clk20mhz'event and clk20mhz='1'then
. O/ E( S! [3 I+ V   if count=9999 then clk1khz<=not clk1khz;count:=0;
! W1 g. `3 Q4 k/ S* `/ R. P: telse count:=count+1;
9 M) T0 P6 i. mend if;1 [, z7 U$ x3 U+ e0 |$ O
end if;. O( y0 a! s1 _  K( o; c
end process;* g) T1 ^6 I# o- D& Q5 E& _
process(clk20mhz,money_in)
% e4 s- |, F" v     variable comb1:integer range 0 to 8000;
, Y6 }$ a8 @4 {$ m4 o variable comb1_a,comb1_b,comb1_c,comb1_d:std_logic_vector(3 downto 0);
+ C2 ^) i6 G$ ?# k. p+ Abegin
4 b4 g4 K2 K: Q$ k8 Q: Fif clk20mhz'event and clk20mhz='1'then/ s4 S' n# x6 _5 W% l# ?& z/ z
      if comb1<money_in then" Z- u& b# z: ~! w4 O7 ^. [
     if comb1_a=9 and comb1_b=9 and comb1_c=9 then
& M; B1 Q! \  a- l  {     comb1_a:="0000";
3 u5 w8 r+ O) n- ~comb1_b:="0000";
4 w$ t+ X% {( F  r+ g1 B: B1 acomb1_c:="0000";
3 K' y' q/ f( c2 N: E# @comb1_d:=comb1_d+1;* a+ D$ G& e/ r% A: E! R& N
comb1:=comb1+1;- Z! d" }  f4 z4 G
elsif comb1_a=9 and comb1_b=9 then
# S  D( y  @4 A  {( u& S' ycomb1_a:="0000";
) l5 O  n! _5 L% K- Y. scomb1_b:="0000";
! g- }/ Z9 v: U0 fcomb1_c:=comb1_c+1;
. i9 J' A* v0 h) scomb1:=comb1+1;) I0 `! R$ w3 T0 q$ g4 x2 a# v, @
elsif comb1_a=9 then
. t1 P# f4 E0 B! j$ A+ `9 f      comb1_a:="0000";$ w: Z3 |" z1 }" [3 c& b
comb1_b:=comb1_b+1;2 P& B- P8 ?/ d& H3 g) @/ V
comb1:=comb1+1;! ^5 K8 B  b2 B/ n4 F8 z2 W
else
0 Q% @( r  _( n8 a' ?0 [      comb1_a:=comb1_a+1;' R/ {' k  O2 U4 z7 u. l4 D) A$ b
comb1:=comb1+1;
2 H' X; s7 k. Q& h7 f* U8 A$ S8 ?3 e  end if;
" f/ ?* c+ ]. m  elsif comb1=money_in then
+ V9 \" B$ }# N* h0 e     m_one<=comb1_a;
2 C6 H5 z0 q! z* e/ I3 Y  D, Qm_ten<=comb1_b;
* _* {! P$ I9 N% _: N& w+ cm_hun<=comb1_c;. A- e7 j! x1 }, j
m_tho<=comb1_d;
. R, j* [2 K% z5 b, V  belsif comb1>money_in then$ h8 g2 M. X/ q& _. |
           comb1_a:="0000";5 ^) M4 R- |# D# W- {- l' R. H
     comb1_b:="0000";
6 R4 j) E: m) @7 s( }$ ^comb1_c:="0000";/ J: I; {+ b$ Q/ R( k( Z6 w
     comb1_d:="0000";
' Z; }+ U  R3 H  Q; f" Fcomb1:=0;
& F+ s* J' d8 \1 nend if;
: w, Y7 m; r* p( S; B, w& send if;, G" ]4 D- s  u1 `! K- u# ]6 b0 B
end process;
% G5 {, ^& p2 F5 u1 D$ x2 m- Lprocess(clk20mhz,distance_in)
/ Q2 r; ^; e! S5 ]; l  z" @      variable comb2:integer range 0 to 8000;  C1 L4 r3 ?( d: O9 E7 h$ v
variable comb2_a,comb2_b,comb2_c,comb2_d:std_logic_vector(3 downto 0);
5 s6 h, x5 ~4 X  Kbegin1 C; J# I0 j) k
if clk20mhz'event and clk20mhz='1'then0 d& n+ T" a- S; b0 @
      if comb2<distance_in then+ S" D0 r' A$ z+ A, `8 a
            if comb2_a=9 and comb2_b=9 and comb2_c=9 then6 h! i: r5 P, {# @8 }
                 comb2_a:="0000";" B: {2 N7 D% ~% U' s6 e. k
          comb2_b:="0000";0 S1 y; m( V+ n5 E/ M/ L. |
          comb2_c:="0000";  O6 v* }. n& u% {. p! ~
    comb2_d:=comb2_d+1;
6 V/ \9 |# T9 G: X3 w- B6 I    comb2:=comb2+1;
2 P0 V/ D0 U/ d& w5 h5 ~0 x  welsif comb2_a=9 and comb2_b=9 then
  z# L3 T, ?. q            comb2_a:="0000";
0 p6 T/ r" L; }  j       comb2_b:="0000";! }# h1 j7 M7 q
    comb2_c:=comb2_c+1;
* z1 i0 g: e; E& N    comb2:=comb2+1;# |* e1 D& c+ E, k$ U$ M" a. B* `
elsif comb2_a=9 then4 K2 E  C* o1 b0 D$ Q
            comb2_a:="0000";- O4 g0 T2 R* _8 n6 {
      comb2_b:=comb2_b+1;/ Z7 b8 i8 ?2 e+ I- x& Q
      comb2:=comb2+1;
& q5 a* C" A# I( o5 \  ielse( f) l; Z$ d# d& g
               comb2_a:=comb2_a+1;
. J$ @6 h) M) z6 }: d5 z/ E      comb2:=comb2+1;
$ ]) `9 H4 d# q4 `' vend if;' U3 i6 w- t5 ^& K* s
     elsif comb2=distance_in then
2 c1 Z' H  ]! L7 u               d_one<=comb2_a;' v: \1 E; o! c9 D( S' ^9 e
         d_ten<=comb2_b;
& B" K5 R* P4 `6 e$ N+ E& m      d_hun<=comb2_c;
1 n6 I7 U4 [4 X! _; L      d_tho<=comb2_d;4 G$ w% U$ M) t, O
elsif comb2>distance_in then
* R! }6 V( H/ l% _8 V3 [3 y               comb2_a:="0000";
) v4 q" t* |3 |1 z' d! }9 b& y6 S        comb2_b:="0000";
4 R4 t2 j1 ]8 a. R: j, W  Z        comb2_c:="0000";+ I& M; b3 I/ B+ ~
        comb2_d:="0000";
$ ~1 W" i. ?& y9 `5 q% v- y        comb2:=0;
3 b3 L( N1 x) P$ H4 U6 y   end if;) {4 O7 _- [/ |& `
end if;6 U3 l9 Q* S# Z3 p
end process;9 m  {9 u% K7 z0 F$ M) Q! e# B
process(clk1khz,m_one,m_ten,m_hun,m_tho,d_one,d_ten,d_hun,d_tho)+ o' K  n0 c7 ~# F# N( H% E# P
variable cnt:std_logic_vector(2downto 0);
0 O4 e4 Z2 J  X5 Wbegin
9 b/ S4 t9 `( i% {) a$ ^- pif clk1khz'event and clk1khz='1'then
4 Y; p. ]9 G/ l" Q' e) w3 t      cnt:=cnt+1;' u3 i8 d9 F5 I. N
end if;. I" ]0 ?5 \+ X, ?7 k
case cnt is
3 `# D% E' f' v: Y: C2 Y      when"000"=>data<=m_one;dp<='0';scan<="00000001";
9 g$ N; i8 L/ i8 l6 }. ]      when"001"=>data<=m_ten;dp<='0';scan<="00000010";- w  L+ k  d" w% }
      when"010"=>data<=m_hun;dp<='1';scan<="00000100";$ e: {; j. @, W9 x6 {7 v1 H& x
      when"011"=>data<=m_tho;dp<='0';scan<="00001000";0 P  {% C' I) n1 D! h
  when"100"=>data<=m_one;dp<='0';scan<="00010000";
) {! M- n4 g! g! _, x      when"101"=>data<=m_ten;dp<='0';scan<="00100000";& G9 [* @8 x" i  k8 k- _
      when"110"=>data<=m_hun;dp<='1';scan<="01000000";+ b3 ]7 y% _* X. E
      when"111"=>data<=m_tho;dp<='0';scan<="10000000";) @6 f/ _1 N6 B8 c* V0 Y# i( I% O
end case;
3 g' j2 y1 P+ i( Vend process;8 x; V& @9 w; x1 }  |7 `$ v
process(data)) ~8 A  v# {) Y% w! A: c. U% F
begin' a9 @! Z* s- B) a' f
case data is, d9 C2 n( @+ O2 {9 m
     when"0000"=>seg7<="1111110";
: c7 y4 d6 ^2 p when"0001"=>seg7<="0110000";3 k6 c9 j0 }: s8 B
when"0010"=>seg7<="1101101";
4 w' O9 u5 ]( i0 ]5 R* U when"0011"=>seg7<="1111001";
& q- w, W6 W8 W- T/ \3 q7 Q when"0100"=>seg7<="0110011";2 X! ]7 w/ I4 L
when"0101"=>seg7<="1011011";
. B2 J: n5 u4 t. @, [* g when"0110"=>seg7<="1011111";
6 s, \  P. h, k5 s- l7 p5 k! d when"0111"=>seg7<="1110000";
1 G# ~& R+ b; d* e3 c when"1000"=>seg7<="1111111";/ ?  e6 M/ k8 G/ q% Q
when"1001"=>seg7<="1111011";+ l7 E/ `5 d1 n5 P/ g1 m) T: ]
when others=>seg7<="0000000";
$ _9 B8 E, i! E# i" y8 ?! gend case;  ^' q, h9 F7 Q0 c1 H
end process;
; a, M* h$ q2 ~end;
+ ^0 s3 J# a" ?8 d9 I( g4 s- c. L% _2 ?. z& a
8 H5 y" z% k/ \" F0 b8 A; x: ?

1 t9 t; M6 s8 m
" y9 n7 e) A& j+ @' o7 ?; o6 F第二个程序是这样的
回复 支持 反对

使用道具 举报

578

主题

936

帖子

4943

积分

四级会员

Rank: 4

积分
4943
发表于 2022-7-18 15:09:05 | 显示全部楼层

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

579

主题

911

帖子

5007

积分

四级会员

Rank: 4

积分
5007
发表于 2022-7-18 15:09:35 | 显示全部楼层
第二个模块的仿真哪一步是上面这个图
回复 支持 反对

使用道具 举报

604

主题

947

帖子

5151

积分

四级会员

Rank: 4

积分
5151
发表于 2022-7-18 15:10:35 | 显示全部楼层
没人吗?
回复 支持 反对

使用道具 举报

657

主题

1025

帖子

5598

积分

四级会员

Rank: 4

积分
5598
发表于 2022-7-18 15:10:41 | 显示全部楼层
求大神帮我仿能真一波  并且把这两个模块的接线后的仿真也做一下谢谢了毕业设计现在就差这一步了下图是连接完成的仿真图- m2 ?6 H+ `" ~: m: Y6 @/ s

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

568

主题

922

帖子

4783

积分

四级会员

Rank: 4

积分
4783
发表于 2022-7-18 15:11:04 | 显示全部楼层
哦不是仿真图 是将两个模块的连接到一起的原理图
回复 支持 反对

使用道具 举报

598

主题

943

帖子

5138

积分

四级会员

Rank: 4

积分
5138
发表于 2022-7-18 15:11:10 | 显示全部楼层
自顶大神在哪里?
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表