精華區beta Electronics 關於我們 聯絡資訊
請問VHDL高手 一個程式想了很久,一直寫不出來,所以上來問一下怎樣寫才能辦到... ================================================ 一輸入一輸出 輸入( 1 0 0 1 1 1 1 0 0...) 兩個兩個看,當出現10 或 01 就轉態 所以,波型應該要這樣... ___ ___ ___ ___ ___ IN 1 0 0 1 1 1 1 0 0 0... OUT 0 0 1 1 0 0 0 0 1 1 1 1 .... ^ ^ ^ ^ : 轉態 ================================================ -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: 210-58-6-204.cm.dynamic.apol.com.tw
pupucar:把<=都改成=試看看 140.118.202.77 09/14
pupucar:剛剛發現是因為你的CNT少數一次 140.118.202.77 09/14
pupucar:第一推說錯了 140.118.202.77 09/14
> -------------------------------------------------------------------------- < 發信人: [email protected] (小書), 看板: Electronics 標 題: Re: VHDL問題 發信站: 清華資訊(楓橋驛站) (Wed Sep 14 08:54:00 2005) 轉信站: ptt!ctu-reader!ctu-peer!news.nctu!netnews.csie.nctu!news.cs.nthu!netne ※ 引述《cuckoo691210 (小書)》之銘言: > 請問VHDL高手 > 一個程式想了很久,一直寫不出來,所以上來問一下怎樣寫才能辦到... > ================================================ > 一輸入一輸出 > 輸入( 1 0 0 1 1 1 1 0 0...) > 兩個兩個看,當出現10 或 01 就轉態 > 所以,波型應該要這樣... > ___ ___ ___ ___ ___ > IN 1 0 0 1 1 1 1 0 0 0... > OUT 0 0 1 1 0 0 0 0 1 1 1 1 .... > ^ ^ ^ > ^ : 轉態 > ================================================ 因為我這樣寫...結果是... 100100101 00111000111... 怎麼改都是這樣>"< architecture Behavioral of abc is signal reg : std_logic_vector(1 downto 0):="00"; signal sig : std_logic:='0'; signal cnt : std_logic_vector(1 downto 0):="00"; begin process(CLK) begin if rising_edge(CLK) then reg <= reg(0) & D; if cnt = 2 then if reg = "01" or reg="10" then sig <= not sig; end if; reg<="00"; cnt<="00"; else cnt <= cnt + "01"; end if; end if; end process; D1<=sig; end Behavioral; -- ※ Origin: 楓橋驛站<bbs.cs.nthu.edu.tw> ◆ From: 210-58-6-204.cm.dynamic.apol.com.tw > -------------------------------------------------------------------------- < 作者: luckyBF (耶?) 看板: Electronics 標題: Re: VHDL問題 時間: Wed Sep 14 11:33:37 2005 ※ 引述《[email protected] (小書)》之銘言: : ※ 引述《cuckoo691210 (小書)》之銘言: : > 請問VHDL高手 : > 一個程式想了很久,一直寫不出來,所以上來問一下怎樣寫才能辦到... : > ================================================ : > 一輸入一輸出 : > 輸入( 1 0 0 1 1 1 1 0 0...) : > 兩個兩個看,當出現10 或 01 就轉態 : > 所以,波型應該要這樣... : > ___ ___ ___ ___ ___ : > IN 1 0 0 1 1 1 1 0 0 0... : > OUT 0 0 1 1 0 0 0 0 1 1 1 1 .... : > ^ ^ ^ : > ^ : 轉態 : > ================================================ 我很久沒寫了vhdl了~~ 不過我覺得你換個思考模式會不會比較好寫?! 其實不過是01~~或者是10時~~~ 其實都是輸入的那端有變化時~~才需要有轉態~~ 所以~~應該可以輸出的結果~~ 可以算是個「雙穩態」的形為模式吧~~ 所以~~要不要試試看寫成~~讓他在輸入端的「正緣」及「負緣」時動作~~ 這樣說不定就行了~~ 不過我很久沒碰了啦~~ 不清楚能不能這樣寫~~ 只是我覺得這樣的想法就簡單多了才是XD : 因為我這樣寫...結果是... : 100100101 : 00111000111... : 怎麼改都是這樣>"< : architecture Behavioral of abc is : signal reg : std_logic_vector(1 downto 0):="00"; : signal sig : std_logic:='0'; : signal cnt : std_logic_vector(1 downto 0):="00"; : begin : process(CLK) : begin : if rising_edge(CLK) then : reg <= reg(0) & D; : if cnt = 2 then : if reg = "01" or reg="10" then : sig <= not sig; : end if; : reg<="00"; : cnt<="00"; : else : cnt <= cnt + "01"; : end if; : end if; : end process; : D1<=sig; : end Behavioral; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.202.74 > -------------------------------------------------------------------------- < 作者: pupucar (knock!knock!) 站內: Electronics 標題: Re: VHDL問題 時間: Wed Sep 14 12:03:12 2005 ※ 引述《[email protected] (小書)》之銘言: : ※ 引述《cuckoo691210 (小書)》之銘言: : > 請問VHDL高手 : > 一個程式想了很久,一直寫不出來,所以上來問一下怎樣寫才能辦到... : > ================================================ : > 一輸入一輸出 : > 輸入( 1 0 0 1 1 1 1 0 0...) : > 兩個兩個看,當出現10 或 01 就轉態 : > 所以,波型應該要這樣... : > ___ ___ ___ ___ ___ : > IN 1 0 0 1 1 1 1 0 0 0... : > OUT 0 0 1 1 0 0 0 0 1 1 1 1 .... : > ^ ^ ^ : > ^ : 轉態 : > ================================================ : 因為我這樣寫...結果是... : 100100101 : 00111000111... : 怎麼改都是這樣>"< : architecture Behavioral of abc is : signal reg : std_logic_vector(1 downto 0):="00"; : signal sig : std_logic:='0'; : signal cnt : std_logic_vector(1 downto 0):="00"; : begin : process(CLK) : begin : if rising_edge(CLK) then : reg <= reg(0) & D; 把大括號裡東西的移到這裡 因為你CNT=2的時候 那一行會沒作到 以致於有一次輸入而卻CNT沒加到 然後ELSE D掉 : if cnt = 2 then : if reg = "01" or reg="10" then : sig <= not sig; : end if; : reg<="00"; : cnt<="00"; : else 【cnt <= cnt + "01";】 : end if; : end if; : end process; : D1<=sig; : end Behavioral; -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.202.77 ※ 編輯: pupucar 來自: 140.118.202.77 (09/14 12:04)