3 回答

TA貢獻(xiàn)2065條經(jīng)驗(yàn) 獲得超14個(gè)贊
你這個(gè)程序有些不規(guī)范,比如SIGNAL current_state,next_state:states :=st0;
這里是小寫(xiě),而你在后面又用大寫(xiě),建議前后大小寫(xiě)保持一致;還有就是有些是在輸入的時(shí)候把一些字母輸錯(cuò)了,自己以后寫(xiě)程序要注意;一定還要注意一些標(biāo)點(diǎn)符號(hào),比如“)”,“;”之類的。還有END IF,END與IF之間一定要有一個(gè)空格。我把改好之后的程序?qū)懺谙旅妫阕约簩?duì)照看一下。
修改后的程序:
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
ENTITY ADCINT IS
PORT(D :IN STD_LOGIC_VECTOR(7 DOWNTO 0);
CLK : IN STD_LOGIC;
EOC : IN STD_LOGIC;
ALE : OUT STD_LOGIC;
START : OUT STD_LOGIC;
OE : OUT STD_LOGIC;
ADDA : OUT STD_LOGIC;
LOCK0 : OUT STD_LOGIC;
Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
END ADCINT;
ARCHITECTURE BEHAV OF ADCINT IS
TYPE STATES IS (ST0,ST1,ST2,ST3,ST4);
SIGNAL CURRENT_STATE,NEXT_STATE:STATES :=ST0;
SIGNAL REGL :STD_LOGIC_VECTOR(7 DOWNTO 0);
SIGNAL LOCK :STD_LOGIC;
BEGIN
ADDA<='1';
Q<=REGL;
LOCK0<=LOCK;
COM: PROCESS(CURRENT_STATE,EOC)
BEGIN
CASE CURRENT_STATE IS
WHEN ST0=>ALE<='0';START<='0';LOCK<='0';OE<='0'; NEXT_STATE <=ST1;
WHEN ST1=>ALE<='1';START<='1';LOCK<='0';OE<='0'; NEXT_STATE <=ST2;
WHEN ST2=>ALE<='0';START<='0';LOCK<='0';OE<='0';
IF (EOC='1') THEN NEXT_STATE<=ST3;
ELSE NEXT_STATE<=ST2;
END IF;
WHEN ST3=>ALE<='0';START<='0';LOCK<='0';OE<='1';NEXT_STATE<=ST4;
WHEN ST4=>ALE<='0';START<='0';LOCK<='0';OE<='1';NEXT_STATE<=ST0;
WHEN OTHERS=>NEXT_STATE<=ST0;
END CASE;
END PROCESS COM;
REG: PROCESS (CLK)
BEGIN
IF (CLK'EVENT AND CLK='1') THEN CURRENT_STATE<=NEXT_STATE;
END IF;
END PROCESS REG;
LATCH1:PROCESS (LOCK)
BEGIN
IF LOCK'EVENT AND LOCK='1' THEN REGL<=D;
END IF;
END PROCESS LATCH1;
END BEHAV;

TA貢獻(xiàn)1776條經(jīng)驗(yàn) 獲得超12個(gè)贊
Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
---第12行 應(yīng)該改成 Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0));
有PORT的另外半個(gè)括號(hào)
TYPE STATES IS (ST0,ST1,ST2,ST3,ST4,);
-----第15行ST4后面的逗號(hào)去掉 ,還有程序里面有的地方是ST0 有的地方是STO,注意一下

TA貢獻(xiàn)1876條經(jīng)驗(yàn) 獲得超5個(gè)贊
Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0);這一句分號(hào)之前再加個(gè)括號(hào)
TYPE STATES IS (STO,ST1,ST2,ST3,ST4,);這一行ST4后面的逗號(hào)去掉
REG PRECESS (CLK) 這一行REG后面加冒號(hào)
IF (CLK'ENENT AND CLK='1') THEN CURRENT_STATE<NEXT_STATE;ENDIF;
這一行賦值號(hào)使用錯(cuò)誤,endif之間少個(gè)空格
TYPE STATES IS (ST0,ST1,ST2,ST3,ST4,);
-----第15行ST4后面的逗號(hào)去掉 ,還有程序里面有的地方是ST0 有的地方是STO,注意一下
這個(gè)是ADC0809的接口控制器吧,沒(méi)問(wèn)題,只是你太不認(rèn)真了
添加回答
舉報(bào)