电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

585

主题

910

帖子

4977

积分

四级会员

Rank: 4

积分
4977
发表于 2022-7-18 15:06:53 | 显示全部楼层 |阅读模式
library ieee;/ ?% e. u; a, ^, h1 m7 Z  A
use ieee.std_logic_1164.all;
' Y+ [0 |& [. s8 e7 b) U2 o; Ause ieee.std_logic_unsigned.all;( f7 u/ B3 I3 i
entity taxi is
  A# O$ M: k$ N/ D. D3 kport(clk:in std_logic;
5 [; n' d& |4 w8 S! _       start:in std_logic;
$ ~/ S+ F  J; b7 p2 D  S6 O       stop:in std_logic;
+ W; H9 z0 ^' o) J       pause:in std_logic;
7 n- O- B1 N6 U! b  B8 G7 o       speedup:in std_logic_vector(1 downto 0);
+ w; R' C8 n7 `" W; ]5 R       money:out integer range 0 to 8000;
# q* @  s0 q7 j; l       distance:out integer range 0 to 8000);: K. _+ J' u' J; }6 v6 l3 G
end;
7 }& k/ S% i7 p5 _; i  qarchitecture one of taxi is
, P% o) J# V* B6 }5 ^begin# k* c7 h+ c5 n* }9 S- D8 [. D$ p
process(clk,start,stop,pause,speedup)
/ S3 ?: l' j3 S. l  S     variable money_reg,distance_reg:integer range 0 to 8000;- {) q/ E: l1 ]( d6 t1 j
     variable num:integer range 0 to 9;
  t3 K1 g/ Y2 P$ t3 H1 K6 z6 j3 m* a0 X     variable dis:integer range 0 to 100;9 k( {* A+ f/ A' x. B
     variable d:std_logic;3 n! Q0 e" W/ [0 D
begin' C* E; H& ~4 r
if stop='1'then+ X, {  y$ D+ i5 I5 k
      money_reg:=0;& s* d# s8 P: ~
      distance_reg:=0;  H9 p9 l+ V5 V( B+ R
      dis:=0;
2 `: y  Y# j% x8 ?& }      num:=0;* ]6 m) a: K! L# R9 [
elsif start='1'then! ^8 T) q1 ~  y5 U1 `
      money_reg:=600;0 J* ^8 D/ }6 d& q, M) w0 K
      distance_reg:=0;
0 T9 s5 H& s# g9 A; h! N      dis:=0;  R# M1 e% g& R  |1 s- Q
      num:=0;
! N7 ~+ I% s! h1 Y: ~4 W0 o- Qelsif clk'event and clk='1'then
5 ?# X" d3 j# }( k4 P5 U3 w5 v3 s       if start='0'and speedup="00"and pause='0'  and stop='0'then9 t- ^% z- N  ?8 v/ ]+ r7 G
            if num=9 then
7 k2 \8 X( @; w' H+ R                 num:=0;
$ M7 O8 d: e  @0 l( S" @                 distance_reg:=distance_reg+1;
0 Y  a$ v' F4 K                 dis:=dis+1;, @4 _  J' @9 H+ Q3 U
              else num:=num+1;2 g& C' N/ _( X6 |: N
              end if;- G* S. p5 T# O
elsif start='0'and speedup="01"and pause='0'and stop='0'then
% C( v9 u8 C7 ^' g- r. P2 `# q   if num=9 then
. c2 e  t0 o5 r" ?        num:=0;' C5 F( A4 z' [! l7 F
        distance_reg:=distance_reg+2;
. N- K; P) V0 \2 v  @3 {3 ?/ i        dis:=dis+2;# l- Z0 w$ l" ]$ ?" m) D
      else num:=num+1;1 [$ `; @# E% P$ L+ F% F5 P
      end if;5 L: a# C% o4 A' D( b& a% D5 ^" g4 _+ k  f
elsif start='0'and speedup="10"and pause='0'and stop='0'then
0 F5 N8 ^$ G' _: K' v$ z, N    if num=9 then) p& U7 w4 E. S3 `
        num:=0;2 P9 A, D8 {4 c6 C# ~
         distance_reg:=distance_reg+5;+ r# ^, K5 W3 ~0 k
         dis:=dis+5;
$ u  {" \$ m; M7 r: j" o0 Z    else num:=num+1;
6 `9 H' q' T/ J( m    end if;& c1 K; B. x9 g" l( Q$ G$ h
elsif start='0'and speedup="11"and pause='0'and stop='0'then
) x  k6 y8 d# t3 w- G, T. \           distance_reg:=distance_reg+1;4 Q3 ^8 N+ i7 E1 b" x0 N
          dis:=dis+1;
. O2 K2 {& Z0 t* r* y1 gend if;. @; b/ X" W! f# R8 G2 q6 G, z
if dis>=100then( @( E* Y- i$ n1 O" V/ u% G
         d:='1';/ h8 `# v5 O$ |3 y9 [7 T! c4 g
         dis:=0;: r: l; x0 B7 x: ?& T) X
      else d:='0';
4 B4 ^+ i- a0 [( [' g/ Bend if;5 P% z2 x$ b9 Y) B# n4 P
if distance_reg>=300 then
7 p8 s3 [& n3 z/ H2 U0 q       if money_reg<2000and d='1'then
: j7 R8 P5 `9 G% i4 q/ b                money_reg:=money_reg+120;
4 g# u! F  J  z+ f5 k# X       elsif money_reg>=2000 and d='1'then  z& a0 m" m. m) o3 m: L. P" m/ E: }
             money_reg:=money_reg+180;0 [1 Z7 G9 `2 x7 ~, g
       end if;
% W0 f9 ^, _2 ?    end if;2 {( V0 z4 r4 E4 I+ W
end if;: s; o/ n; f: t- m: \
    money<=money_reg;+ R6 v# P6 Z2 p) S
    distance<=distance_reg;! S, `# {: I. Z2 m5 K+ Z: M
end process;/ V9 @7 G9 l' \
end;
4 Q; o% y5 l9 h( }程序是这样的,
回复

使用道具 举报

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;' g9 j7 m) _+ t1 }! J& u* m
use ieee.std_logic_1164.all;
4 n$ ?1 T2 @5 J  V# N1 n( @- iuse ieee.std_logic_unsigned.all;" y/ P5 ~, e- Q1 P/ k
entity decoder is
. @) `1 K9 S) @  gport(clk20mhz:in std_logic;
) [8 ^" _, R' l" R1 ~9 ?3 j% C      money_in:in integer range 0to 8000;- Y/ {- Z8 e( v2 e4 d: l
distance_in:in integer range 0 to 8000;, j3 y6 \: k, e" F  F  J
scan:out std_logic_vector(7 downto 0);. p% P  K& w- Y, \/ u' y
seg7:out std_logic_vector(6 downto 0);
4 E' P8 @- w7 W7 [2 Y1 ~dp:out std_logic);
$ n. u) F" z" Bend;
1 S& \2 l5 ?$ `4 M$ Z  sarchitecture one of decoder is2 U9 O6 _' U* k/ z1 C" |
signal clk1khz:std_logic;9 G+ Z+ p! U" t( i
signal data:std_logic_vector(3 downto 0);
/ Y1 [9 ]) K/ U9 c7 W$ vsignal m_one,m_ten,m_hun,m_tho:std_logic_vector(3 downto 0 );
9 z5 I* i3 M, I6 s) usignal d_one,d_ten,d_hun,d_tho:std_logic_vector(3 downto 0);# s# [7 ]5 B: [- T: H7 k
begin- X0 h/ M8 ]# Q, F$ p
process(clk20mhz)! C' I: \' M1 l+ X9 s) x
variable count:integer range 0 to 9999;0 q2 j8 [5 |3 I8 a$ f* C( W8 P' m
begin
2 g# U0 j5 n6 l& _if clk20mhz'event and clk20mhz='1'then
! a+ a. Q5 m, _2 e+ C- d   if count=9999 then clk1khz<=not clk1khz;count:=0;
: t9 g+ A% r8 I& x* L8 Selse count:=count+1;0 _0 L! g0 N% n$ ?
end if;. X: i& x5 t7 {/ x
end if;# ]! X' l5 U: ~  q' L
end process;9 t6 ~! {; X  g& t; _6 c' g
process(clk20mhz,money_in), k1 P' s: H) A% K2 K
     variable comb1:integer range 0 to 8000;* X* T8 t2 ?5 v% E% @( I1 q
variable comb1_a,comb1_b,comb1_c,comb1_d:std_logic_vector(3 downto 0);
5 j% J+ e! O7 ^7 W  i$ R1 r9 V1 ?6 Dbegin6 M" _- x7 T0 G8 e
if clk20mhz'event and clk20mhz='1'then
. `4 h/ X* }1 p5 t6 S9 t      if comb1<money_in then' i- h" R( z# c0 Y( a5 a, G. }
     if comb1_a=9 and comb1_b=9 and comb1_c=9 then0 |! R1 N$ R* w" c5 l' \, x" \. ]
     comb1_a:="0000";. Z6 ?4 w0 d% _% T: M$ |
comb1_b:="0000";
7 h3 w7 d- b* F6 P  \% Hcomb1_c:="0000";
$ j7 ?6 Q  U! H3 t; ]comb1_d:=comb1_d+1;, P) C* z* Z6 F% B
comb1:=comb1+1;, H; ?: S6 @7 ?7 ]/ w' i; p9 O
elsif comb1_a=9 and comb1_b=9 then& H: Z& P- Y! r# F" l
comb1_a:="0000";9 k( ]+ R; O9 u5 g0 B% C  @4 n2 ^
comb1_b:="0000";; w* x" y! q4 k3 B
comb1_c:=comb1_c+1;
8 w  r6 K6 b) r0 F) K1 q+ f. ncomb1:=comb1+1;
  N& R% V; {! R& c3 N/ d' gelsif comb1_a=9 then# z$ W' N: ^4 C2 f
      comb1_a:="0000";
+ K8 S+ O/ K+ ~4 G$ `/ y/ x1 [5 ecomb1_b:=comb1_b+1;! C7 b3 i& a  q8 @
comb1:=comb1+1;
6 O! V4 m/ t1 j else- f, r# q: n, ~: Y, V
      comb1_a:=comb1_a+1;
5 _1 ]+ X# d$ \& r. w1 H3 Bcomb1:=comb1+1;7 _/ u$ k1 o  t1 s9 _+ u2 M
  end if;7 W; e3 M: `" @
  elsif comb1=money_in then, q0 r7 s+ n0 [* _2 H
     m_one<=comb1_a;% z+ C: d. j/ F' y) i1 [
m_ten<=comb1_b;. J& g' A" [; t0 t, j
m_hun<=comb1_c;
8 l% K0 H) V( F/ T. w4 `m_tho<=comb1_d;
" Q7 V. C- u3 p* t7 V% Delsif comb1>money_in then0 S5 [' b) \6 ?7 d
           comb1_a:="0000";
. T3 f: X! m& S+ \$ y5 _2 _     comb1_b:="0000";
' ?0 ]5 _0 c5 H+ L1 |comb1_c:="0000";- S8 h, ^/ m" c# v+ S1 W! V
     comb1_d:="0000";/ E7 d2 x! u8 g9 \& h' a
comb1:=0;& v$ k2 K& b2 [/ w
end if;8 D0 P& @1 }6 |+ ?
end if;# ~' O' B1 y" Q; v/ `, s( Y
end process;" i* o2 x- U8 X2 z3 k' N' {$ R
process(clk20mhz,distance_in)
) B  `" X& o0 e! y) O7 r      variable comb2:integer range 0 to 8000;
: d: W8 |+ c: J, u$ G3 n0 Cvariable comb2_a,comb2_b,comb2_c,comb2_d:std_logic_vector(3 downto 0);
1 Q; D' \4 ^4 k  s- jbegin
/ x" ~( e, k) f6 u6 ?if clk20mhz'event and clk20mhz='1'then# N5 ]& E/ @# B) Z. Y7 a
      if comb2<distance_in then1 d( c9 D& P; A" R$ ~8 S
            if comb2_a=9 and comb2_b=9 and comb2_c=9 then' b# T8 x, L: O$ j% N1 r' g
                 comb2_a:="0000";  r0 @. d! e- D- O9 H2 w
          comb2_b:="0000";. a3 W: |) B) a  W* \# G
          comb2_c:="0000";
+ y; i0 U0 ]" j6 a    comb2_d:=comb2_d+1;
  ~$ Y' a! Q: [    comb2:=comb2+1;
2 |+ l$ N; c2 n, Q2 y; Z. Qelsif comb2_a=9 and comb2_b=9 then- o6 e& E! ~2 \+ H
            comb2_a:="0000";" a( Y0 C1 l" q: `
       comb2_b:="0000";
& S- w, u4 X) @  z. S$ t    comb2_c:=comb2_c+1;
* M* l. i' P; E$ j# a    comb2:=comb2+1;
8 ]4 D( X. x  T$ ~$ u" Z5 Nelsif comb2_a=9 then
5 ^9 [& s: B. I& q0 b. l8 v            comb2_a:="0000";6 k3 _& v/ N- Q* o" {4 k
      comb2_b:=comb2_b+1;" v! X3 J. r' I3 H% d; {' w
      comb2:=comb2+1;
( z+ i2 T& b; c) X" U6 pelse
& E0 l3 B  p5 q8 |! y2 i3 S7 d               comb2_a:=comb2_a+1;' e* g9 U  P9 m* o" w- V1 F
      comb2:=comb2+1;5 r7 a8 g7 y7 |' H
end if;6 Z. c+ w! |% |0 b& A" S" g1 V8 y
     elsif comb2=distance_in then6 X5 z- B; D4 W) _
               d_one<=comb2_a;
& _2 A4 \# J2 p  m; w/ \4 q0 c; }         d_ten<=comb2_b;
4 [+ q( H& W* C& o% H      d_hun<=comb2_c;
3 E5 V/ z, J) R$ w( T      d_tho<=comb2_d;6 y) C+ N0 R5 G7 u, f
elsif comb2>distance_in then
& _' ?( l/ x* s3 g& F               comb2_a:="0000";8 ]  e; u# f+ F* o. l) L
        comb2_b:="0000";
$ j: H5 X! S1 ~, a# w        comb2_c:="0000";# [% a' ?" M4 o- O; C
        comb2_d:="0000";
# C( J" U6 a; n" H2 @0 o$ J        comb2:=0;( h5 F) i; G( i% O; Y
   end if;
' [" x/ H$ J" U+ C: l% Z+ Wend if;
) u% J! U- \, e. l5 Uend process;: U8 p$ t8 V' Q% E% O$ ?
process(clk1khz,m_one,m_ten,m_hun,m_tho,d_one,d_ten,d_hun,d_tho)7 Z+ K" a  h6 h! z
variable cnt:std_logic_vector(2downto 0);
! z% l- e9 R( h( S! [' Vbegin
% G: g. J2 B& G5 P+ I/ ~if clk1khz'event and clk1khz='1'then% Q! f( M* q, k( q2 v0 {2 F% A* ^9 t
      cnt:=cnt+1;! ^0 a6 x- {& f1 a) E$ f
end if;
' @& t5 p) g8 A+ l- Scase cnt is
' ~- K4 K1 I. p: E. D      when"000"=>data<=m_one;dp<='0';scan<="00000001";
7 R/ x' I- x! B1 L9 v+ j      when"001"=>data<=m_ten;dp<='0';scan<="00000010";
! h7 D  K$ t/ @# y: g- B      when"010"=>data<=m_hun;dp<='1';scan<="00000100";
0 M- g9 p' Y1 J; c/ f      when"011"=>data<=m_tho;dp<='0';scan<="00001000";
+ k; a" r, ?0 \* J! `! z+ A1 m  when"100"=>data<=m_one;dp<='0';scan<="00010000";4 S$ P9 r$ Q* M/ L
      when"101"=>data<=m_ten;dp<='0';scan<="00100000";$ U* @  n$ h+ K0 f; w+ @+ p& E% N% l% L
      when"110"=>data<=m_hun;dp<='1';scan<="01000000";3 r9 Z7 j2 [( s! C8 J) H- J
      when"111"=>data<=m_tho;dp<='0';scan<="10000000";  `6 I& Z5 x8 G  J1 r) E) K( F/ S9 D8 V
end case;% [/ V8 @% b  h3 `! d# N2 J  {0 |: W
end process;
0 I9 c* B) r7 \, Fprocess(data)
) v: K6 w  B2 Obegin
3 E% Y3 @* C& Scase data is
. q, N: L% F6 u  e9 Y/ [! K     when"0000"=>seg7<="1111110";! P) m) \- u7 i) }7 [' Y
when"0001"=>seg7<="0110000";" E6 s- a! r! o  i
when"0010"=>seg7<="1101101";) K# E. |5 L# Z, x
when"0011"=>seg7<="1111001";1 M" C- u( P5 M, l/ k
when"0100"=>seg7<="0110011";" T2 ]3 m$ `) C: G  o0 `
when"0101"=>seg7<="1011011";
0 D: k% Q2 T4 v& `, ?2 j3 P, F) P& q when"0110"=>seg7<="1011111";( a2 h" L" H0 n* K
when"0111"=>seg7<="1110000";0 [# _- O. w/ A  r) N# k
when"1000"=>seg7<="1111111";
" d( o8 x" ?2 | when"1001"=>seg7<="1111011";
$ C# E3 l5 x6 v) H0 d9 ~ when others=>seg7<="0000000";
) ]" |9 y5 V: h0 K3 R' Send case;
( x! Z6 Q  ?/ n8 g8 Yend process;6 J( w% a0 _- b! {, \5 g1 g
end;
/ a, e. Q8 p0 ]8 X2 _' o  H3 p& f1 m5 ~6 u5 c

" H7 C/ s7 H; q, ^, n( Q$ E+ i2 Y: l$ R0 M9 ~- ]
2 x9 t4 I0 [" f9 ]3 b( a% y
第二个程序是这样的
回复 支持 反对

使用道具 举报

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 | 显示全部楼层
求大神帮我仿能真一波  并且把这两个模块的接线后的仿真也做一下谢谢了毕业设计现在就差这一步了下图是连接完成的仿真图8 X1 s$ \/ F( }( U4 O- m

本帖子中包含更多资源

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

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 返回顶部 返回列表