Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

搜索
1 2 3 4
查看: 13489|回復: 21
打印 上一主題 下一主題

[問題求助] 請問倒數00就停怎寫?

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-26 18:56:42 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
LIBRARY ieee; : y- A; r) D, Z( ^+ i# @
USE ieee.std_logic_1164.all;% M; {1 H, O) G" k
USE ieee.std_logic_unsigned.all;
4 o4 O0 F7 R* q9 \' r4 {0 N& YENTITY counter_backwards60_seg2 IS# l) Q6 K& T: T$ @# U  D
        PORT(Clrn,Load,Ena,Clk        : IN  STD_LOGIC;- ^, @: P/ P; k# ^; U) a
                 Ring          : OUT STD_LOGIC;                         ' _' a* N" R# l. |' I$ {% J0 `
                 Q0,Q1         : OUT STD_LOGIC_VECTOR(3 downto 0)) ;                        : C% P2 T$ p9 a+ u9 l* d0 G+ P
END counter_backwards60_seg2;4 Z' B# O: A  r' u% A: k9 v5 m: y
ARCHITECTURE arc OF counter_backwards60_seg2 IS
1 B, Z0 Y# b' N* J5 m BEGIN; P, B: F/ [- }8 v
  PROCESS (Clk)
( ?1 E9 x' }" g# \     VARIABLE imper0 :STD_LOGIC_VECTOR(3 downto 0);( k  j5 O& s' J1 p
     VARIABLE imper1 :STD_LOGIC_VECTOR(3 downto 0);
( M) U( }* r! F6 _  BEGIN* D+ ?' Y+ e: ~) s) ?
        IF Clrn='0' THEN  imper1 := "0110"; imper0 := "0000";0 t% p2 k% M6 ]# I) ?! V. n
        ELSE IF (Clk'event AND Clk='1') THEN
& e% h4 N4 G  e3 ]- ]            IF Load='0' THEN imper1:="0110"; imper0:="0000";               
; D$ g0 i8 z7 C- l; o8 Y            ELSIF Ena='1' THEN. v7 s# }9 d9 S1 I& K+ J
               IF (imper0="1001" AND imper1="0101")THEN
6 i& m2 C$ O9 `: ~+ n! p( r                  imper0 :="1000";
. W8 G0 `3 Y! I8 n- h               ELSIF imper0 >"0000" THEN imper0 := imper0-1;
; t0 g5 ~- }& N- l, u/ t               ELSE imper0:="1001";/ M/ u; `/ V% c; j0 A4 K
                    IF  imper1 >"0000" THEN imper1 := imper1-1;
; ]  Y$ W) n4 J! b% U                    ELSE imper1:="0101";                     
$ Y: g3 z+ C; A% j8 m! ]! P                    END IF;6 ]5 M4 Y( S/ ^( i8 f8 ~
               END IF; " J- Q# X/ U* z/ D  N
            END IF;
2 b1 [0 X: m8 F% q        END IF;
! r" M. [# O8 ^- y( U     END IF;               $ A4 B0 z! [# P' @
Q0 <= imper0; Q1 <= imper1; # k+ j! N+ S3 `) @1 H
Ring <= not(imper0(0) or imper0(1) or imper0(2) or imper0(3) or imper1(0) or imper1(1) or imper1(2) or imper1(3));         , c' a% O; O* D  L
   END PROCESS ;
/ ]# G& k0 [0 F( v. k' I& X$ lEND arc;

6 M/ o7 s6 X1 Q* e3 [! @
7 o1 i' z* n9 x8 v  \上面是我的倒數60秒程式" L, o. U7 r6 ^1 p: M% r6 }! y
小弟不才- p# o8 B1 o: V( X  x
不知道怎寫停止
" I* Y9 P# U$ a  u: E( z5 |  z2 Y只要數1次60就好
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-28 17:05:24 | 顯示全部樓層
我是使用QuartusII
4 R1 }) P& k0 \) `% d8 T" X* V9 ?跑一次的宣告是要放哪一行...?
3 s% T( d+ R* ^# }+ v% ]& ^/ d還有一個問題想請教
2 E! }% Z) L0 E就是counter_backwards60_seg2是我的分鐘5 E( x( w4 L8 q6 U  }1 Z
counter_backwards60_seg是我的秒) C0 |9 u3 n! F8 n# c
現在就是秒那邊 10→9秒的時候Co也會進位
6 J  n3 ]- ?& R4 F" p秒的個位數有延遲 所以導致10→9秒的Co會進位
3 Y; c7 e* Z8 n) j+ R2 x- V程式分跟秒是依樣的 (Ring就是Co)
  ~& X8 l  u- z8 u9 A* D另外 分鐘怎從60開始
8 O# g. D: \0 k# I0 `因為現在我是00:00開始倒數8 C% G7 E- ]- U4 i
我需要在counter_backwards60_seg2改哪邊?
. Y+ {# Y  u, r  ?/ x0 y* n4 o; \6 M+ K' C$ p0 k$ v

& d6 }* o$ P0 P3 l* U1 V, a) L我奇摩即時通:xt_9000  I$ A3 ]& I1 a- u0 B
希望有好心人幫幫忙
0 H  g$ }2 |+ ?% L/ R懵懂無知的大學生
3#
 樓主| 發表於 2008-12-5 17:10:55 | 顯示全部樓層
感謝大大的回答
6 q5 t2 T) f0 V3 a9 R; G& }我想問說
' u2 l$ e' @& S4 `# y: t$ H+ j7 M怎從"60"開始倒數?
: H4 s! s2 V8 }& d60→59→58→57....→00" `' x: w) W% t
因為我弄出來都是
" Z& c) L1 {( M1 A, H+ k00→59→58→57....→00
1 K, x# l" w% E8 u2 N: {+ r4 W
3 n+ e5 C$ E/ d6 g$ \2 U: M* x- G2 S( Y6 d! o: ~4 f1 U( `
希望有高手解一下疑惑
4#
 樓主| 發表於 2008-12-6 20:22:54 | 顯示全部樓層
沒有啦/ t/ U5 }1 Y8 w2 E( T
因為我要做60分鐘倒數2 A- z$ U$ k/ d. s3 F. N2 Y
所以要60:00 →59:59→59:58* r2 n: x% Z5 D6 z/ b
我現在是00:00→59:59 @@"
5#
 樓主| 發表於 2008-12-7 19:00:33 | 顯示全部樓層
我沒有設定res啊@@", m7 {& D' W$ B9 w
我是用Quartus II 電路圖接法
) F& O6 t! O- s60:00(現在是00:00) →59:59→59:58
0 g3 S4 d9 P3 b% e- `4 u4 q" Z7 q- C- P/ w5 A" b
IF Clrn='0'  或者 IF Load='0'  就停止動作了啊@@
) E) W. t/ ]) d5 [! ?2 d小弟比較笨拙~"~
6#
 樓主| 發表於 2008-12-8 01:00:37 | 顯示全部樓層
LIBRARY ieee;
" [* E# g7 ^8 o! mUSE ieee.std_logic_1164.all;, h0 b+ E6 ^. d0 U& F
USE ieee.std_logic_unsigned.all;) s6 q  _6 `  f9 n! o
ENTITY counter_backwards60_seg2 IS$ m- q* j2 I* z
        PORT(Clk        : IN  STD_LOGIC;         
! ^9 r$ m9 C4 j# [) b                 Q0,Q1         : OUT STD_LOGIC_VECTOR(3 downto 0)) ;               
7 O# m+ T# B% D& tEND counter_backwards60_seg2;1 Y# D& }4 l* j  J
ARCHITECTURE arc OF counter_backwards60_seg2 IS
8 ^, b7 O7 f* H8 O BEGIN
6 W( q! Z/ Q0 u6 Y. k  PROCESS (Clk)  h3 z! V+ d& r7 Q: |
     VARIABLE imper0 :STD_LOGIC_VECTOR(3 downto 0);8 u1 S  l& [6 [* d* W6 t% a0 L
     VARIABLE imper1 :STD_LOGIC_VECTOR(3 downto 0);   
0 g- G% V+ o+ b9 j  BEGIN         
/ V+ X% ~0 a8 }! j+ B       # V; I) T& T, y  h, Q+ `& }+ \
       IF (Clk'event AND Clk='1') THEN           . m2 e( \6 J" Z( V, i" e) S
            
* a9 X0 A0 Z" O- s# @               IF imper0 >"0000" THEN imper0 := imper0-1;3 G3 }1 X; B& H( M
               ELSE imper0:="1001";5 g( F% d' J1 E
               IF  imper1 >"0000" THEN imper1 := imper1-1;
' W  U9 I! r- K" m; m               ELSE imper1:="0101";
                                 
% V- O1 [/ `$ _* Y5 X5 E                    END IF;8 N! `7 b3 C9 h
               END IF;
: h6 O3 Z; O: W4 j; `* y& N             END IF;  
) Y) \  m8 h/ n1 ]( I- [         Q0 <= imper0; Q1 <= imper1;  8 r& a3 H1 ~) V2 ?
   END PROCESS ;; w1 p+ ]4 @/ J
END arc;
3 N6 H& l% ~1 S5 J# f- s以上我精簡了一些 也能跑模擬圖
' p& O# X; h1 z, M但現在重點是我該怎寫60→59→58...* R1 [' y7 i) ]9 h& |, Z/ K( Z
初始值60要怎寫..." W4 R+ Z0 J' i! v
是要多2個input 然後給他一開始的值?
1 x8 D8 A: |% t6 s+ w& v但要怎寫啊@@...
- y# d, d4 l, T! ?; ]) y9 {$ P( J4 P- g' P
7#
 樓主| 發表於 2008-12-8 21:32:32 | 顯示全部樓層
以上問題已經解決@@"4 B/ u' N& y) J, N
但請問 我需要一個另外程式( ?* V2 u, ^/ l* ~- d+ [, u
去控制暫停開始和暫停
9 M4 X9 \* }( e9 kLIBRARY ieee;
# P/ [# F- V$ F' l2 u' CUSE ieee.std_logic_1164.all;
9 V- J- c  N. i; i: d( J7 gUSE ieee.std_logic_unsigned.all;, Z& ]" n) J7 y! e0 X; t
ENTITY debounce_v IS& P. |7 W% c! o* E2 ], h
        PORT(CLK,PB        : IN  STD_LOGIC;8 X0 q( P  B/ ~# R3 {
                 PULSE        : OUT  STD_LOGIC * @- i$ \) I( z1 d" s7 s* A
                );0 i- y2 o% O) l) Y
END debounce_v;
7 e  x! N0 s  l% O# ^- q0 ]ARCHITECTURE arc OF debounce_v IS
# n( m( }: Y. G1 P) H SIGNAL imper : STD_LOGIC;; [0 @/ G- v- f6 {4 u8 h5 g. q6 C
BEGIN3 p, F* a. s+ i$ z3 R( ]& O
  PROCESS (CLK)
7 B- h( `" E! {7 L& w9 F5 `     VARIABLE counter : integer range 0 to 49;* ?) H# ^8 X: H
  BEGIN
9 h4 A" `4 v4 b8 t* p# x) r" W   IF (CLK'event AND CLK='1') THEN/ w, g/ W( h  b/ @( Q. M: l: u
          IF counter = "1" and (PB = '1') THEN imper <= '1';' Y9 E- |3 O, Y2 Q7 y" D
      ELSE counter := counter-1; imper <= '0';* p5 R1 ?5 j9 U
      END IF; " t( C4 M9 \8 T2 Y. H- z5 T8 ~: q7 q
   END IF;8 ?  x5 n. h) H& w8 S: {" ?7 c
         PULSE <= imper;   
( ~  Y1 ~( U% p6 ~   END PROCESS ;  w. r* G1 @8 n# e1 Q
END arc;
$ W% V+ C4 n) R7 w8 a/ e
/ S1 n5 B" s* |& h! Q這是按一次減一次
9 Y! t& r4 |0 A: e想要按一下開始 按一下暫停
3 W- Q  l. v- |) s4 D4 ?/ K6 f
4 f1 q) h5 Y8 S1 jps.轉自全華圖書
8#
 樓主| 發表於 2008-12-11 20:38:03 | 顯示全部樓層
@@"8 b: m  p1 C$ D) \& e
有需要暫存器??9 I* f/ K/ Z1 _/ P
那是震盪器→先接到開關→接到暫存器→計數器
9 U+ j# T9 g" w7 S這是樣嗎?
9#
 樓主| 發表於 2008-12-12 22:23:39 | 顯示全部樓層
PROCESS (CLK)1 M+ w! z  H$ T5 a
     VARIABLE counter : integer range 0 to 49;0 J6 d# B; c% k5 R
  BEGIN
' f% n6 L8 L) h" h* h8 }/ H6 {   IF (CLK'event AND CLK='1') THEN2 {7 u# J9 B8 K+ [& ?1 E
          IF counter = "1" and (PB = '1') THEN imper <= '1';
% P# G0 O( n. m7 [" @/ j5 s      ELSE counter := counter-1; imper <= '0';/ v7 F5 ]9 G8 l9 E4 ?. u3 ?5 X
      END IF;
7 z# z7 m$ E1 l. l能幫我解釋一下這幾行是什麼意思嗎?
10#
 樓主| 發表於 2008-12-18 19:44:48 | 顯示全部樓層
spring69393 大大感謝您
: f2 d' D8 S7 s% I3 L6 P2 H' q' t! s/ U9 n, L
按鍵開關 第一次 on時,開始計時。, p/ K2 t  T- f. ?: i
                 第二次 on時,停止計時。/ F9 ~. I; |& _/ e  I' q( f
                 第三次 on時,開始計時。- u1 J& N) t2 V* `$ D
  K" h0 N' y2 d1 a. a9 p
這有哪位大大能幫忙@@
11#
 樓主| 發表於 2008-12-22 21:21:19 | 顯示全部樓層
是移位暫存器嗎?/ w+ X+ ?' e% N8 y' K
平行輸入 / 平行輸出# k+ Y/ K+ y5 O) A0 _# I# d
平行輸入 / 串列輸出! @( m* a. g+ S) }
串列輸入 / 平行輸出5 T. M/ t1 w  a' N$ @! q1 {% D
串列輸入 / 串列輸出
# Y& _- j* t  y: P! J4 I2 a哪一個啊@@...) e* U0 x# c, F
我都是看書自己學, o4 ^, @# ^6 m2 u2 N/ B
所以都不會咩1 z1 f5 E; N# d+ C
拜託 幫幫忙
12#
 樓主| 發表於 2008-12-24 20:18:04 | 顯示全部樓層
真的有要用到暫存器?!
9 b0 N; Q/ J8 @( j% o) J" c8 J今天問老師  
) |. Z: d7 F5 `9 U  F* A可是老師沒說到暫存器的東西
7 W% f, t9 x# F反而是說 / g/ B# G/ u7 O" l5 F
IF CLK'event AND CLK='1
) d+ m% s1 P2 H, d; Ucounter := counter + 1 ; % ~0 c% z- ^9 R
8 c* Y9 d5 C- l9 E% v" |
抓counter (0)   ----第一個腳位?!- R6 R; O8 ~+ y8 H; [& \
給counter位元多一點之類的' x- c0 {7 J' y4 K  l: a$ e: {

% x& o% e& @1 B- R" u0 a3 \00  01   10   11
$ ?" J& R- I/ b% n2 c9 s4 m最後腳位為0   ----Run9 ^, ~& L1 U7 ]5 {: p
最後腳位為1   ----Stop
3 F7 P1 E9 e  M7 g2 \3 E- C% Z. \  T3 Z4 @( r
可是要怎弄勒@@
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

首頁|手機版|Chip123 科技應用創新平台 |新契機國際商機整合股份有限公司

GMT+8, 2024-6-16 12:18 PM , Processed in 0.134517 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回復 返回頂部 返回列表