Chip123 科技應用創新平台

 找回密碼
 申請會員

QQ登錄

只需一步,快速開始

Login

用FB帳號登入

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

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

[複製鏈接]
跳轉到指定樓層
1#
發表於 2008-11-26 18:56:42 | 顯示全部樓層 回帖獎勵 |倒序瀏覽 |閱讀模式
LIBRARY ieee;
2 {& f4 Y1 {, u/ j/ ?9 P1 f' UUSE ieee.std_logic_1164.all;
( Y: ?2 `' ^( hUSE ieee.std_logic_unsigned.all;
  S1 i4 c& F+ X; [$ iENTITY counter_backwards60_seg2 IS. F) P( g/ u. f+ }# O; Y! ^
        PORT(Clrn,Load,Ena,Clk        : IN  STD_LOGIC;- p( ^) Q* D  Z6 y9 r
                 Ring          : OUT STD_LOGIC;                         . Q  H0 [1 X1 o0 g; q
                 Q0,Q1         : OUT STD_LOGIC_VECTOR(3 downto 0)) ;                        2 @; W5 [' K8 i% K
END counter_backwards60_seg2;$ A0 c( _7 {. q+ b& h; _) N' _
ARCHITECTURE arc OF counter_backwards60_seg2 IS
, k9 Z0 W  ~6 [- W9 ` BEGIN
& B# y* k. b" }& q; s( M  PROCESS (Clk)! O6 I7 I+ {4 O% t
     VARIABLE imper0 :STD_LOGIC_VECTOR(3 downto 0);# \) h1 X. e- o& H3 J! d6 i
     VARIABLE imper1 :STD_LOGIC_VECTOR(3 downto 0);
/ q, y7 n$ o; ~+ y6 ]  BEGIN) c- i8 ^" ?) f# ~3 S* t
        IF Clrn='0' THEN  imper1 := "0110"; imper0 := "0000";  R' k+ N* w; h: P# m! B' }
        ELSE IF (Clk'event AND Clk='1') THEN
, q6 v- V5 }& o: o4 P3 ~. L0 X            IF Load='0' THEN imper1:="0110"; imper0:="0000";               
, F/ N( T2 u* [+ ~& D; e% Z8 q# I            ELSIF Ena='1' THEN
0 [; d- d% i' M2 x" A               IF (imper0="1001" AND imper1="0101")THEN: A- _& ?- ]& L# Z% N& {
                  imper0 :="1000"; , C" c; _+ X3 F  W( n; G
               ELSIF imper0 >"0000" THEN imper0 := imper0-1;! X, l+ N( F; W) W0 G. A
               ELSE imper0:="1001";* t# f+ A. Z, ?$ G0 S: ^' q& W
                    IF  imper1 >"0000" THEN imper1 := imper1-1;7 a4 e$ I/ a6 J* F
                    ELSE imper1:="0101";                      . j1 T" ~+ u" }) u4 o+ t* `# W$ |
                    END IF;
4 H; ?+ w; O5 e( H* k- W               END IF;
& o7 C* A* ^$ C- F* g6 N# S+ A            END IF;
5 Z" U) o% r) k7 T8 q        END IF;+ d' r! _- x- [- _' {) `9 X
     END IF;               
3 `# O/ O4 N  W7 ^1 G+ cQ0 <= imper0; Q1 <= imper1; 4 v% O, c6 R8 o$ Z5 F* o
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));         
* L) U+ Q$ f& y- d1 m; k   END PROCESS ;% d4 z! K6 @5 i! j5 S$ q
END arc;
; a- h  W* P8 `3 Y
/ w2 P2 v( c& y/ l0 A9 i) Z
上面是我的倒數60秒程式
& E, \, p# q' b- [! [# L小弟不才
4 {# F" o) ?2 A7 a% i/ R不知道怎寫停止
7 g9 V6 b9 {  Y2 L  |. ?4 p只要數1次60就好
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享分享 頂 踩 分享分享
2#
 樓主| 發表於 2008-11-28 17:05:24 | 顯示全部樓層
我是使用QuartusII7 ~1 w' P3 r8 R7 D; G) K3 |
跑一次的宣告是要放哪一行...?" X  h% L, y) a  J
還有一個問題想請教5 ?& u, e$ P, N
就是counter_backwards60_seg2是我的分鐘( Z, v0 h1 B8 s
counter_backwards60_seg是我的秒
- n' u& I" O- U現在就是秒那邊 10→9秒的時候Co也會進位4 n1 |9 P6 W! l7 C
秒的個位數有延遲 所以導致10→9秒的Co會進位
& h- ?! }* Q0 }. i* ~0 F/ n. o7 U程式分跟秒是依樣的 (Ring就是Co)
2 I3 k, G- O; ^. I$ f另外 分鐘怎從60開始
" z6 \, V- [' L5 }6 g  j因為現在我是00:00開始倒數
% I7 K- i: T& g: f6 C0 T- A  ?我需要在counter_backwards60_seg2改哪邊?4 J: P& I9 [5 w9 U3 d$ {

2 g, H4 T# b4 X2 P/ s3 S: i+ G& E1 W  U2 e3 ~2 _. I
我奇摩即時通:xt_9000
) _3 B+ A4 k0 M$ K, _. S希望有好心人幫幫忙2 ~# e/ T- X) y7 q
懵懂無知的大學生
3#
 樓主| 發表於 2008-12-5 17:10:55 | 顯示全部樓層
感謝大大的回答6 M  B/ i3 [5 a% ]
我想問說
- G& i3 ]0 _9 q2 q; f- }: Y怎從"60"開始倒數?; N0 Z# h& Z) ^
60→59→58→57....→00
$ p+ F( X* N, U) n5 c因為我弄出來都是7 H/ D) h$ Z& g) V# N
00→59→58→57....→00" }* T- ?" u9 w8 s) J1 j1 x) f8 [
4 ^# `% x# I$ c! E

0 \# ?: J& e% i+ d, h. a: e1 o希望有高手解一下疑惑
4#
 樓主| 發表於 2008-12-6 20:22:54 | 顯示全部樓層
沒有啦
9 ?6 W4 X1 A+ P! r因為我要做60分鐘倒數
, s/ ~; {# s! v所以要60:00 →59:59→59:58
3 E# I! `& E& O: V, {' e我現在是00:00→59:59 @@"
5#
 樓主| 發表於 2008-12-7 19:00:33 | 顯示全部樓層
我沒有設定res啊@@"8 d9 X  \4 Y+ R) ^- f% V5 |
我是用Quartus II 電路圖接法: P9 Q& Y* M  S1 K: i/ f
60:00(現在是00:00) →59:59→59:585 _9 {7 c; p$ m- q( G9 p, P2 @
4 r, Y0 _0 @7 a! ]
IF Clrn='0'  或者 IF Load='0'  就停止動作了啊@@
0 |& X2 y" t1 ?' L+ ^4 S7 w, \/ t小弟比較笨拙~"~
6#
 樓主| 發表於 2008-12-8 01:00:37 | 顯示全部樓層
LIBRARY ieee;
7 H2 s* a, E8 R4 N- p/ {USE ieee.std_logic_1164.all;
4 L# V. k4 c) iUSE ieee.std_logic_unsigned.all;
5 Y1 ~$ ]4 q5 b" V! mENTITY counter_backwards60_seg2 IS
9 q9 _; V! u( I% x        PORT(Clk        : IN  STD_LOGIC;         + u' @: ~; v; V2 M
                 Q0,Q1         : OUT STD_LOGIC_VECTOR(3 downto 0)) ;                ; t5 g# I" u/ O  P  V4 k2 Y% Z) Y) Z
END counter_backwards60_seg2;2 P7 U. U5 K  b9 e9 P, I
ARCHITECTURE arc OF counter_backwards60_seg2 IS0 d/ G2 z: s+ x% y) K+ C
BEGIN( `% k9 b8 U  s2 @- I& a
  PROCESS (Clk)' F4 }( S3 Q+ Z- f# z
     VARIABLE imper0 :STD_LOGIC_VECTOR(3 downto 0);
. h9 B% K! e! M) g     VARIABLE imper1 :STD_LOGIC_VECTOR(3 downto 0);   
- I% S  N7 E! d9 u/ T& |9 e1 L  BEGIN         
8 B' M4 Q; P6 s3 L1 O# R       ' H5 d" `3 i/ @0 u( X7 G
       IF (Clk'event AND Clk='1') THEN           
$ G9 K! ?; i$ a0 ?             0 s$ D8 l9 A3 |% Z$ Q+ q& l
               IF imper0 >"0000" THEN imper0 := imper0-1;
* H0 k! F. N* Z2 |" ~. b               ELSE imper0:="1001";* d% B- @8 A; p
               IF  imper1 >"0000" THEN imper1 := imper1-1;
+ K$ P2 Z, E( ~1 ], ?2 V3 z* H               ELSE imper1:="0101";
                                 
2 k  C9 o  h8 [9 S5 ]7 h- U                    END IF;
4 o5 G+ @9 S7 a" L6 ~. Z               END IF;
3 N% M( Y$ k$ a0 N7 c1 x             END IF;  
: N' F' ]$ U6 t4 F. d5 i         Q0 <= imper0; Q1 <= imper1;  
4 E6 C) @% ]+ Q7 o: F   END PROCESS ;
8 |) N. j7 @! |/ nEND arc;, s5 K9 b0 H  U# a4 ^+ o
以上我精簡了一些 也能跑模擬圖
% |( W" H# L+ I5 ~* |; B! a% Z8 S但現在重點是我該怎寫60→59→58...5 u; k, n; S6 H
初始值60要怎寫...: ^! F# p6 j8 T' t- @- f
是要多2個input 然後給他一開始的值?, E  }5 n/ I" o7 A5 o' N+ u
但要怎寫啊@@...
6 v& O  x8 A! z, E5 ~5 P% u5 k
7#
 樓主| 發表於 2008-12-8 21:32:32 | 顯示全部樓層
以上問題已經解決@@"
' Y: t) o! E6 \但請問 我需要一個另外程式
! y$ d/ W" m6 I去控制暫停開始和暫停7 e$ U5 d- ?" e! H/ g
LIBRARY ieee;
* j, o+ u( f6 N: X* @  U. d2 D+ |USE ieee.std_logic_1164.all;7 k" d' [# M, X% O9 x& K- q- y$ ?1 p
USE ieee.std_logic_unsigned.all;
) G' l7 `" w# R/ W. {ENTITY debounce_v IS
  M2 s* {2 G! G* d/ ?2 V4 F% I. l        PORT(CLK,PB        : IN  STD_LOGIC;
  L: G' w% j* g/ W" V                 PULSE        : OUT  STD_LOGIC
8 G  M" n! M$ _1 V                );
3 |- L+ r7 Z: N4 ~5 ?END debounce_v;. }; ~+ U3 y7 J0 ~
ARCHITECTURE arc OF debounce_v IS% g! R) g! H  p( N
SIGNAL imper : STD_LOGIC;2 d/ q2 x  b0 C1 ^+ X3 ~8 x. p& N
BEGIN
4 s% S3 s: i/ @2 C6 O  PROCESS (CLK)+ G! j6 a: s! C; K! z
     VARIABLE counter : integer range 0 to 49;! A( O- G; d3 d/ K6 s+ c
  BEGIN; C9 w% e- K& y' a# r
   IF (CLK'event AND CLK='1') THEN
) I& q& t: a8 F          IF counter = "1" and (PB = '1') THEN imper <= '1';
) a" A0 G8 \  o( `# O9 F" C      ELSE counter := counter-1; imper <= '0';
- T; A( [, y& l* ^7 R/ I% M" {      END IF; $ P" _, z: J% g* `& L
   END IF;' W: m1 c& u; ?1 m. J1 U$ x( @
         PULSE <= imper;   , [1 P1 |3 _# u" S6 }& c
   END PROCESS ;
( z) R4 ~5 c& X5 n; bEND arc;
4 @& A  E' x* s5 C& p
2 X  h4 k' {! O; z這是按一次減一次' d5 \7 |- [' \1 d
想要按一下開始 按一下暫停
8 l4 S* J; J& V1 c( }7 b' u/ n$ b) S" ~' H5 R7 p% j) p  L
ps.轉自全華圖書
8#
 樓主| 發表於 2008-12-11 20:38:03 | 顯示全部樓層
@@"
5 v/ i/ o4 W* t6 e9 g! O. ]有需要暫存器??
$ m  P7 i0 Y5 R5 r4 L  P/ `* h% t那是震盪器→先接到開關→接到暫存器→計數器
1 L. q% O; g  s& n) H這是樣嗎?
9#
 樓主| 發表於 2008-12-12 22:23:39 | 顯示全部樓層
PROCESS (CLK)
3 v) S* t; _4 t6 g     VARIABLE counter : integer range 0 to 49;3 s4 _# U6 _4 u* Z
  BEGIN% a  `1 ~, a, u1 E
   IF (CLK'event AND CLK='1') THEN
  F& i- N; K! J: ?9 Z          IF counter = "1" and (PB = '1') THEN imper <= '1';7 V( J7 S& y) M  h8 ]) q7 t
      ELSE counter := counter-1; imper <= '0';) J" ~3 p/ p7 n1 F
      END IF;
& R6 A" |) `' a0 X+ B' K5 t2 L* ~& e能幫我解釋一下這幾行是什麼意思嗎?
10#
 樓主| 發表於 2008-12-18 19:44:48 | 顯示全部樓層
spring69393 大大感謝您
6 m$ J5 O5 ?+ \1 x
3 X& j! b6 K9 e8 n- `按鍵開關 第一次 on時,開始計時。0 b+ Q6 Y; @( y1 h, D) h% \
                 第二次 on時,停止計時。
* J5 H7 t! y' n% Z) k                 第三次 on時,開始計時。
# f% D9 H' E& {( C! |/ J: Q1 e- m4 }4 `2 o
這有哪位大大能幫忙@@
11#
 樓主| 發表於 2008-12-22 21:21:19 | 顯示全部樓層
是移位暫存器嗎?
  N. j- y2 f& z; V, I平行輸入 / 平行輸出
: q6 ?( K; e3 `平行輸入 / 串列輸出
. i4 Y: w. @9 N8 j串列輸入 / 平行輸出
' d3 O, _. d( g' L' I' M7 N串列輸入 / 串列輸出
% v. h& \( r( J) O. q( _  q" Y哪一個啊@@...+ u5 s* _% y& g# i* Q% C$ @
我都是看書自己學# t( f. i7 h. F
所以都不會咩( y/ i* L+ ?% a; p) k
拜託 幫幫忙
12#
 樓主| 發表於 2008-12-24 20:18:04 | 顯示全部樓層
真的有要用到暫存器?!
* d* P0 s3 D6 R( h  L今天問老師  ' B0 r7 w4 v% c- ?" X0 ]
可是老師沒說到暫存器的東西3 o, @4 U; E/ L
反而是說 ; W# K1 Y! p5 \2 h0 o: F
IF CLK'event AND CLK='1) ~# T' t6 a. t% y2 ?% v, G
counter := counter + 1 ;
& i" b' Q& B! E- @9 K: H5 w" ^' w: j0 S1 a$ w" g* t. D1 F
抓counter (0)   ----第一個腳位?!
% ]5 ~* x" q9 P給counter位元多一點之類的6 M4 f3 T$ T  E& s3 S

2 q$ ?$ x5 G) \: w5 D$ t0 M+ A00  01   10   11
# {1 l* h& `) s6 D最後腳位為0   ----Run0 N* T1 z4 Z4 y
最後腳位為1   ----Stop' ?0 W2 R  [8 `
1 Z1 _+ N- \# A2 d
可是要怎弄勒@@
您需要登錄後才可以回帖 登錄 | 申請會員

本版積分規則

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

GMT+8, 2024-5-14 09:34 PM , Processed in 0.119515 second(s), 18 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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