电子产业一站式赋能平台

PCB联盟网

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

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

[复制链接]

585

主题

910

帖子

4977

积分

四级会员

Rank: 4

积分
4977
发表于 2022-7-18 15:06:53 | 显示全部楼层 |阅读模式
library ieee;
- ?. T$ y# I* g# Q6 Cuse ieee.std_logic_1164.all;, q" `3 D# J- a8 w
use ieee.std_logic_unsigned.all;
6 p* L/ t- q2 M, w+ gentity taxi is
5 F; B" ]$ i- k% }. h. c5 uport(clk:in std_logic;/ h: U. ?1 U2 E8 l
       start:in std_logic;
+ ~* w; E! ^4 U! M6 u6 N0 n0 Z8 J2 b       stop:in std_logic;! M; K  [' v# r. @. X3 F2 L0 U. @" \1 Z
       pause:in std_logic;$ K  ?; H3 S. d8 Q, y2 t1 S( {
       speedup:in std_logic_vector(1 downto 0);
1 |! b0 S, ^4 D       money:out integer range 0 to 8000;
0 V  K; T3 v0 ]' b/ t* n  @       distance:out integer range 0 to 8000);
4 V( g, F8 x/ f' M9 A" ~6 Rend;; O; X; S0 ]( m2 b7 C
architecture one of taxi is
  O; X$ g1 g3 v+ ~begin  B% l  k/ g* E2 f
process(clk,start,stop,pause,speedup)9 O* B( P) v6 h; n/ [7 p6 K
     variable money_reg,distance_reg:integer range 0 to 8000;8 f+ b- g/ V3 ], Y( o7 j/ x1 `
     variable num:integer range 0 to 9;
+ I. z1 B9 g7 ]( v5 j     variable dis:integer range 0 to 100;
* \% c3 R; W  z* a, Y8 X& d$ s/ }8 i     variable d:std_logic;! G. H) |, ~! ?' s8 `  z
begin& a: U$ k0 R, `+ T2 {) P; H
if stop='1'then, k5 _) ?! q6 l5 U: E, n# _
      money_reg:=0;1 U4 V1 ^; Z6 v! u5 k3 B0 V" z
      distance_reg:=0;2 r) Q) y, U0 Y. @
      dis:=0;
7 \1 n" x. j. S" z9 ]6 x      num:=0;
7 U" ?9 x" \  _2 a! velsif start='1'then0 p* Y5 R2 E( K9 |9 ~6 x
      money_reg:=600;
1 @3 H/ \( n- h8 s6 ]7 j( ~      distance_reg:=0;, A/ e% @# g5 S7 E
      dis:=0;
, y1 h; X, _) t      num:=0;
/ g; l4 H1 N! Q% p  ]8 \: melsif clk'event and clk='1'then
6 H5 L# l" c* }; P! F       if start='0'and speedup="00"and pause='0'  and stop='0'then
( c* F: ^4 a' q/ ]/ n            if num=9 then' i$ e% a* ~' x$ J3 I
                 num:=0;! E5 F" X/ X. |- F! |$ p+ Y
                 distance_reg:=distance_reg+1;& b9 C4 r" q2 v+ p0 z6 S! e
                 dis:=dis+1;
/ W! `$ K! @; P8 Q" D              else num:=num+1;
( C; m5 E! v2 ]( A/ N6 B/ [              end if;& Q: p# p9 c& Y; B7 T$ N' S2 m
elsif start='0'and speedup="01"and pause='0'and stop='0'then; D: Y# L" d+ _$ r
   if num=9 then
' g: T5 A9 k, Y- i# R  X' M% Y        num:=0;
0 j( P* N3 Y: J, g" B        distance_reg:=distance_reg+2;" H( M) e9 a! a) i1 }# u+ t8 e
        dis:=dis+2;3 ?( N4 m0 j/ O- F* b7 g
      else num:=num+1;
+ m% W! R- X! J, J6 m* K      end if;" k9 H- e+ @: c3 y* U9 a' G
elsif start='0'and speedup="10"and pause='0'and stop='0'then# o7 s& n( L0 t
    if num=9 then  p  o% K! V* |, w# Y* j5 h
        num:=0;
4 G& z) p; J( R         distance_reg:=distance_reg+5;
, b( g* D! ?+ k& i5 G) A         dis:=dis+5;' H3 {: i8 h+ a8 G6 A8 j! L9 k% M
    else num:=num+1;- y/ H! @5 A7 E" C0 Z
    end if;
: [' b) Q9 M; z! J: _! Jelsif start='0'and speedup="11"and pause='0'and stop='0'then% j" d2 s( f. L% k
           distance_reg:=distance_reg+1;
3 R8 k& Z  }% F! }- E- [          dis:=dis+1;
* F5 [3 H) i# @5 J( w! g. Vend if;
, _$ |% e9 Z1 f' k# Z; `! oif dis>=100then
9 O. I( t' x  |4 P/ O9 g' g         d:='1';/ C3 \9 p% ]$ E4 D; v) y; Y$ R
         dis:=0;5 N4 h. |) G" y& ?# @
      else d:='0';- A, d# b) F0 {' P6 u* j, ~8 T
end if;
) i  v% U. \9 \/ ~  l, ?) ]/ y, N# Sif distance_reg>=300 then5 t: J; J3 }8 I- {  ~1 ]3 C8 s
       if money_reg<2000and d='1'then
  a2 `# a! h! F0 |2 {                money_reg:=money_reg+120;
  \! q* j- M) R  _2 `9 [: J       elsif money_reg>=2000 and d='1'then- q  v5 }& l% F  J- s. H
             money_reg:=money_reg+180;# g" M" S4 z% D* \
       end if;  k# g% S8 K4 a, v; ?
    end if;* x  _9 f3 G& i3 Y
end if;1 N* J2 B# L  N/ T, |0 Y2 d. P" ~
    money<=money_reg;7 e4 \- n6 e5 d  V( B
    distance<=distance_reg;
# ^6 R6 l0 }' N) p" Zend process;% W1 Q" z! u8 F  U& W; G8 b( C
end;3 Z- n3 t6 p3 v, Q1 `
程序是这样的,
回复

使用道具 举报

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;
) D( f9 {1 M& ^use ieee.std_logic_1164.all;6 w2 H7 @3 ?6 }( P
use ieee.std_logic_unsigned.all;7 ~: _0 N4 `+ X# S/ w; o# f
entity decoder is, x2 \3 q! V( U9 F0 l& V' M9 R- ?! B
port(clk20mhz:in std_logic;
* {& O4 {0 m( m7 n      money_in:in integer range 0to 8000;
! U: Y9 P/ w2 O- T0 Rdistance_in:in integer range 0 to 8000;, y$ g. V  O7 ~2 T5 \6 _6 A# N: h
scan:out std_logic_vector(7 downto 0);
! `& c* d5 y! k& D& k9 Cseg7:out std_logic_vector(6 downto 0);
$ L% J( n" f: d2 J  L/ S8 Bdp:out std_logic);, X0 ]& e; t7 w! [
end;+ c' p1 o) `) v  |/ M5 E
architecture one of decoder is% d% J. z. v$ O
signal clk1khz:std_logic;
" t' `0 b+ m3 csignal data:std_logic_vector(3 downto 0);
" b! J" a" N" o8 U+ ^( Jsignal m_one,m_ten,m_hun,m_tho:std_logic_vector(3 downto 0 );* g3 R% X' r* L0 b$ r
signal d_one,d_ten,d_hun,d_tho:std_logic_vector(3 downto 0);. b6 B, a; B6 m8 X7 d
begin, l; r. @; C# p4 Z8 j+ }
process(clk20mhz)
) W$ c, I: Y. i. Y% j& V! xvariable count:integer range 0 to 9999;  g1 c* A' w* J: z
begin
2 Z* ^' |2 F- Z+ }8 h6 X! zif clk20mhz'event and clk20mhz='1'then4 e# b4 Z' p- z1 _
   if count=9999 then clk1khz<=not clk1khz;count:=0;
. t; M0 k3 l7 a, Relse count:=count+1;
) l5 X8 |5 i3 \' R$ b* |' Zend if;
" h$ M9 x; G  r( d  Jend if;
0 N7 B8 h9 Z" L- q1 uend process;9 q& A* C6 G$ A4 |2 c5 J
process(clk20mhz,money_in)
  g" h% S! _: \! \. F     variable comb1:integer range 0 to 8000;
3 m8 m7 n% v* s2 q3 ]1 S1 B variable comb1_a,comb1_b,comb1_c,comb1_d:std_logic_vector(3 downto 0);
/ C# h3 t, X) V9 Zbegin$ }+ `" \& Y  r3 x2 `- a5 h+ _
if clk20mhz'event and clk20mhz='1'then
* r2 E6 c8 V  ]9 c8 I6 d      if comb1<money_in then
9 A9 i: B7 k5 H0 o$ ^     if comb1_a=9 and comb1_b=9 and comb1_c=9 then
% B; x) w$ [/ I, D& ~3 j* u     comb1_a:="0000";
9 {# t( n: S" _# n0 A5 Hcomb1_b:="0000";
$ `1 F( Z$ k+ T3 f+ {8 {comb1_c:="0000";1 p* H) r! A! R, Y, y; L
comb1_d:=comb1_d+1;2 G8 c/ Q! J  O! ]. J! J. @) K  L
comb1:=comb1+1;
9 A5 _$ k! a7 ]- N6 z4 _& Belsif comb1_a=9 and comb1_b=9 then
6 q  U5 g& M4 ]comb1_a:="0000";
  }9 k! L/ B' S" D8 Wcomb1_b:="0000";
, b. ]. R, f2 s; ]comb1_c:=comb1_c+1;4 S% |! C$ }( {7 o
comb1:=comb1+1;7 s8 T3 ^) F; ~6 K) r
elsif comb1_a=9 then8 N* R  V- o! [. U
      comb1_a:="0000";% w1 g4 {+ F9 R
comb1_b:=comb1_b+1;
9 D1 T7 H* R, G2 g8 V% fcomb1:=comb1+1;
  O! }  W! H7 o" c7 |+ E else! D& m1 t# t2 x& I
      comb1_a:=comb1_a+1;
" d* I0 u  q  m" P3 U" L& R  Kcomb1:=comb1+1;
3 L+ O. G; i/ {! b  end if;- U; y/ I+ J) j* x
  elsif comb1=money_in then& E& N. A# b6 S3 [3 o
     m_one<=comb1_a;$ z% x( H, F& k* `4 T! }* s
m_ten<=comb1_b;2 k+ m# ]9 `, V: z7 _
m_hun<=comb1_c;- R) S" ], T+ U" \/ ~7 m. c( J
m_tho<=comb1_d;
/ ]% W9 U( m2 Y4 I" T! `# [' v  F3 Celsif comb1>money_in then: n$ k* o0 U- D
           comb1_a:="0000";1 U/ e2 {7 C/ X' `2 h2 i
     comb1_b:="0000";
+ ~' G! C0 A2 f3 {" zcomb1_c:="0000";
6 r  d3 p% L2 A# A% ]" b% Z     comb1_d:="0000";
% H9 {& L! {* g. ], x# m; xcomb1:=0;5 w' {) I% x% T
end if;8 Q2 u  y. |# s9 M
end if;( g: r% r! c# F& p2 b
end process;2 [3 c, N6 b! p. {& O; @6 g! ^
process(clk20mhz,distance_in)5 h' @, O, O9 K8 R
      variable comb2:integer range 0 to 8000;$ _( Z. s! _) B# H
variable comb2_a,comb2_b,comb2_c,comb2_d:std_logic_vector(3 downto 0);# P5 C3 D3 x! _4 @1 G
begin
2 h9 n" l3 j- ^0 c% mif clk20mhz'event and clk20mhz='1'then6 u# m+ r1 k0 b, Z, ]
      if comb2<distance_in then
' }/ O) `. L0 h) j. k2 {            if comb2_a=9 and comb2_b=9 and comb2_c=9 then
" R: A3 G8 m9 b: i( k                 comb2_a:="0000";0 K: \: ~: _* ^! Q
          comb2_b:="0000";
% H1 Z1 g4 }4 M* q          comb2_c:="0000";) O( p! h7 C7 y& @0 ]$ p
    comb2_d:=comb2_d+1;
- W' Y# U  {# D. I$ \! [    comb2:=comb2+1;$ a. A1 R0 x7 d( f* b4 k5 T! C
elsif comb2_a=9 and comb2_b=9 then# `" _. C( m: s" X( G1 G
            comb2_a:="0000";& W- C6 {) H" v
       comb2_b:="0000";
5 `& f3 |+ o; Y    comb2_c:=comb2_c+1;
4 ^' a/ m( ~# m    comb2:=comb2+1;( V( L4 g# B' y- c) d
elsif comb2_a=9 then$ l  p: t  R) U
            comb2_a:="0000";
7 w& k1 }" z; l0 q3 t      comb2_b:=comb2_b+1;
. U( w! k& P  @, _" H      comb2:=comb2+1;; O* l5 C0 ]) S5 G& [! G  L
else& p7 @7 ~1 A3 G5 b* C# C
               comb2_a:=comb2_a+1;
, m4 H# V  m- i& R8 E- P9 |      comb2:=comb2+1;
# j& g( `* |: O/ s3 Y1 F. o8 Eend if;% P  {" k5 a9 m; r% o
     elsif comb2=distance_in then
, D  h; o9 g" D6 \0 u; ~. j0 T               d_one<=comb2_a;9 N7 r+ c. A+ }% A( G/ h4 t+ a
         d_ten<=comb2_b;
+ _5 j. j! d6 r9 Q6 v$ m      d_hun<=comb2_c;# Y: P+ L2 @! G% X2 X- f
      d_tho<=comb2_d;
" _" a- P" f* j! Z; yelsif comb2>distance_in then
& ]6 w& C; i: ^+ v- d- s               comb2_a:="0000";
; F, F" W3 `# i: k        comb2_b:="0000";
0 ^. H+ R" B+ t        comb2_c:="0000";& _  x6 I* G& D6 c. z  T, Q
        comb2_d:="0000";+ E& y' Y" d# n# U8 w/ S
        comb2:=0;
5 n( T# ~0 R9 m+ I) v   end if;. E1 T" D4 m( m* T1 z, d
end if;
' h, K) Q& Y5 K/ s; tend process;5 _* f; U1 p; X% b% Z
process(clk1khz,m_one,m_ten,m_hun,m_tho,d_one,d_ten,d_hun,d_tho)
/ h9 K5 I; A) c, n& _variable cnt:std_logic_vector(2downto 0);1 h7 Y% A9 k5 a5 p5 M$ p
begin
2 m( C! U  g! z8 |4 hif clk1khz'event and clk1khz='1'then2 j8 }! s. V$ ]8 b6 P" g3 p
      cnt:=cnt+1;
3 Z- R2 Y# S6 D- oend if;# n# t  h9 V, B* ~
case cnt is
) i5 X( }  i# @1 l3 }      when"000"=>data<=m_one;dp<='0';scan<="00000001";# B2 k) K' |. W; y
      when"001"=>data<=m_ten;dp<='0';scan<="00000010";
! j" t7 _5 l. ~& d; g% X      when"010"=>data<=m_hun;dp<='1';scan<="00000100";3 @9 e! u; K( X  f# H6 z
      when"011"=>data<=m_tho;dp<='0';scan<="00001000";! q7 p* G4 @! v3 K
  when"100"=>data<=m_one;dp<='0';scan<="00010000";
& Q7 E+ J! {; b! X2 r+ p% L2 z      when"101"=>data<=m_ten;dp<='0';scan<="00100000";
. Y. k3 R; s) S3 j, E8 T      when"110"=>data<=m_hun;dp<='1';scan<="01000000";
& P, ?$ Z+ K. o5 f4 ~5 B      when"111"=>data<=m_tho;dp<='0';scan<="10000000";
7 i! U) [; [: Z) M# |+ I* Wend case;* `+ T/ l1 F! o- V$ E% L6 w% _* @
end process;
6 ?! J* Y# E! X( Oprocess(data)6 o$ c( R% N" s6 Q2 ~/ \3 q
begin+ _4 \9 P5 G+ a1 i! u
case data is
6 n0 `3 Q) w- c0 Q: l     when"0000"=>seg7<="1111110";; O' Z) Q5 ~# U9 k
when"0001"=>seg7<="0110000";$ Y0 T, C7 Q% d
when"0010"=>seg7<="1101101";
/ {! B  _8 J$ h% x( G when"0011"=>seg7<="1111001";1 y) N: a3 G% S" v4 N
when"0100"=>seg7<="0110011";5 y- s  Z: m/ V3 S- {/ g
when"0101"=>seg7<="1011011";2 M' v! r9 m! B, y3 m
when"0110"=>seg7<="1011111";5 ~% I0 ~# u  C, y+ B
when"0111"=>seg7<="1110000";% O' j, L: W: }. c% e8 P7 Z! x. H2 [
when"1000"=>seg7<="1111111";
5 }( K0 X' ~) d, ~7 u, Z! E when"1001"=>seg7<="1111011";0 s3 r9 R1 X0 K% K' }
when others=>seg7<="0000000";" W6 N6 b9 H, ^7 ?4 `
end case;
# K9 T0 ^, ?( x1 C! `& D/ B5 ~! Wend process;' j/ V6 ?8 f, ?* D
end;5 W0 t5 V# ~4 X

% \+ K( H: ?( p1 X0 ^& K! |7 z: v) C0 U# z2 a4 |

7 F3 ^. f" }5 x( W! u$ f1 l8 c! E
. F4 M5 B8 }% \1 I8 N) N2 R! 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 | 显示全部楼层
求大神帮我仿能真一波  并且把这两个模块的接线后的仿真也做一下谢谢了毕业设计现在就差这一步了下图是连接完成的仿真图! a1 k7 b, ^* a+ L$ {" I9 Y

本帖子中包含更多资源

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

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