|
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測(cè)控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng) 驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
求助,幫看一下程序怎么改,謝謝! |
作者:nss321 欄目:EDA技術(shù) |
現(xiàn)想實(shí)現(xiàn)如下功能: 輸入有兩個(gè)時(shí)鐘信號(hào):gate:1Hz方波,clk:40MHZ;另一輸入是使能信號(hào):en。 輸出:對(duì)40MHZ方波進(jìn)行分頻輸出方波:dataout。 要求:在en=1時(shí),dataout=0;在en=0時(shí),等gate的上升沿來時(shí),dataout開始輸出方波,以后等每個(gè)gate的上升沿對(duì)輸出復(fù)位一次,使輸出與gate的上升沿同步。 程序如下: library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY KEYSCAN IS PORT ( clk : IN std_LOGIC; gate : IN std_LOGIC; en : IN std_LOGIC; dataout : OUT std_LOGIC); END KEYSCAN; ARCHITECTURE arch OF KEYSCAN IS SIGNAL div_cnt : std_LOGIC_vector(3 downto 0); SIGNAL dataout_tmp : std_LOGIC; SIGNAL start : std_LOGIC; BEGIN dataout<=dataout_tmp; PROCESS(en,clk,gate) BEGIN IF (en= '1') THEN dataout_tmp<='0'; div_cnt <= "0000"; start<='1'; elsif(en= '0') then IF (gate'EVENT AND gate = '1') THEN dataout_tmp<='1'; div_cnt <= "0000"; start<='0'; end if; end if; IF(start<='0' and (clk'EVENT AND clk = '1'))then div_cnt <= div_cnt + 1; IF (div_cnt="0111") THEN dataout_tmp<='0'; ELSIF (div_cnt="1111") THEN dataout_tmp<='1'; end if; end if; END PROCESS; END arch; 提示如下錯(cuò)誤: 怎么改正,請(qǐng)指點(diǎn),謝謝! Error (10629): VHDL error at KEYSCAN.vhd(42): can't synthesize LOGIC for statement with conditions that TEST for the edges of multiple clocks |
2樓: | >>參與討論 |
作者: xilinxer 于 2007/4/11 13:45:00 發(fā)布:
hehe ! 不要用雙時(shí)鐘!用一個(gè)快的時(shí)鐘,檢測(cè)慢的gate信號(hào)的上升沿!就可以了 |
|
|
免費(fèi)注冊(cè)為維庫(kù)電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入 |
Copyright © 1998-2006 www.udpf.com.cn 浙ICP證030469號(hào) |