一、實(shí)驗(yàn)?zāi)康?/h2>
(1) 熟悉EDA軟件,并能熟練使用。
(2) 分析設(shè)計(jì)任務(wù),根據(jù)任務(wù)要求完成設(shè)計(jì)內(nèi)容。
(3) 利用軟件對(duì)設(shè)計(jì)內(nèi)容進(jìn)行仿真調(diào)試,得到正確運(yùn)行結(jié)果。
二、實(shí)驗(yàn)要求
(1)設(shè)計(jì)具有異步清零,同步使能的60進(jìn)制計(jì)數(shù)器,并用VHDL語(yǔ)句進(jìn)行例化
(2)設(shè)計(jì)七段譯碼器的VHDL代碼,利用元件例化的方式實(shí)現(xiàn)計(jì)數(shù)譯碼器的設(shè)計(jì)
三、實(shí)驗(yàn)步驟
(1) 建立工作庫(kù)文件夾和編輯設(shè)計(jì)文件
File->New Project Wizard
(2) 創(chuàng)建工程
File->New->Verilog HDL File
(3) 全程編譯



(4) 時(shí)序仿真

由上圖可知,當(dāng)時(shí)鐘使能端信號(hào)到來(lái)時(shí),低四位會(huì)加1;
當(dāng)?shù)退奈患拥?001(數(shù)字9)時(shí),高四位會(huì)加1;
符合計(jì)數(shù)器規(guī)律。
當(dāng)高四位為0101(5)且低四位為1001(9)時(shí),會(huì)產(chǎn)生一個(gè)進(jìn)位信號(hào),
且下一個(gè)時(shí)鐘信號(hào)來(lái)之后,高四位低四位都會(huì)清零。
當(dāng)RST為1時(shí),低四位高四位全清零。
綜合分析可知,這是一個(gè)60進(jìn)制計(jì)數(shù)器。

由上圖可知,當(dāng)時(shí)鐘信號(hào)到來(lái)時(shí),DOUT會(huì)加1;
當(dāng)DOUT到1001(數(shù)字9)時(shí),COUT進(jìn)位會(huì)加1;
符合10進(jìn)制計(jì)數(shù)器規(guī)律。

由仿真波形可知,數(shù)字0-9均可用八位二進(jìn)制數(shù)表示出來(lái),且結(jié)果是一一對(duì)應(yīng)的;
當(dāng)輸入大于9時(shí),輸出為空,保持不變;
當(dāng)時(shí)鐘信號(hào)繼續(xù)增加時(shí),譯碼器會(huì)循環(huán)輸出0-9的二進(jìn)制數(shù),可以看出來(lái)這是一個(gè)七段譯碼器。

由仿真波形可知,CLK為1,EN使能端為1時(shí),輸出加1,且表示為譯碼形式;
當(dāng)RST0為高電平時(shí),計(jì)數(shù)歸零。
四、VHDL程序文本
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT60 IS --60進(jìn)制計(jì)數(shù)器
PORT (
CLK,RST,EN:IN STD_LOGIC;
DHOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); --高四位輸出
DLOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0); --低四位輸出
COUT:OUT STD_LOGIC);
END ENTITY CNT60;
ARCHITECTURE behave OF CNT60 IS
BEGIN
COUT<='1'WHEN(DHOUT="0101" AND DLOUT="1001")ELSE '0'; --確定進(jìn)位條件
PROCESS(CLK,EN,RST)
BEGIN
IF RST='1' THEN DHOUT<="0000";DLOUT<="0000"; --異步清零
ELSIF CLK'EVENT AND CLK ='1' THEN
IF EN='1' THEN DLOUT<=DLOUT+1;END IF; --同步使能
IF(DLOUT=9)THEN DLOUT<="0000";DHOUT<=DHOUT+1;END IF; --低四位歸零設(shè)置
IF(DHOUT=5 AND DLOUT=9) THEN DHOUT<="0000"; END IF; --高四位歸零設(shè)置
END IF;
END PROCESS;
END ARCHITECTURE behave;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY SEG7 IS --七段譯碼器
PORT (INDATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0); --輸入,4位數(shù),表示0-9
ODATA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));--輸出,八位,對(duì)應(yīng)數(shù)碼管上八段
END ENTITY SEG7;
ARCHITECTURE BHV OF SEG7 IS
BEGIN
PROCESS (INDATA)
BEGIN
CASE (INDATA) IS
WHEN "0000" => ODATA<= "0111111" ; --數(shù)字0的高電平點(diǎn)亮(公共端共陰極)二進(jìn)制表示方法
WHEN "0001" => ODATA<= "0001110" ; --1
WHEN "0010" => ODATA<= "1011011" ; --2
WHEN "0011" => ODATA<= "1001111" ; --3
WHEN "0100" => ODATA<= "1100110" ; --4
WHEN "0101" => ODATA<= "1101101" ; --5
WHEN "0110" => ODATA<= "1111101" ; --6
WHEN "0111" => ODATA<= "0000111" ; --7
WHEN "1000" => ODATA<= "1111111" ; --8
WHEN "1001" => ODATA<= "1101111" ; --9
WHEN OTHERS => NULL; --其他情況,輸出為空
END CASE; --結(jié)束case
END PROCESS;
END ARCHITECTURE BHV;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
USE IEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITY CNT_10 IS --10進(jìn)制計(jì)數(shù)器
PORT (
CLK,RST,EN:IN STD_LOGIC;
DOUT:BUFFER STD_LOGIC_VECTOR(3 DOWNTO 0);
COUT:OUT STD_LOGIC);
END ENTITY CNT_10;
ARCHITECTURE behave OF CNT_10 IS
BEGIN
COUT<='1'WHEN(DOUT="1010" )ELSE '0'; --確定進(jìn)位條件
PROCESS(CLK,EN,RST)
BEGIN
IF RST='1' THEN DOUT<="0000";
ELSIF CLK'EVENT AND CLK ='1' THEN
IF EN='1' THEN DOUT<=DOUT+1;END IF;
IF(DOUT=9)THEN DOUT<="0000";END IF;
END IF;
END PROCESS;
END ARCHITECTURE behave;
LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL ;
ENTITY CNT_10_LED IS --計(jì)數(shù)譯碼器
PORT (CLK0,RST0,EN0: IN STD_LOGIC;
DOUT0:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END ENTITY CNT_10_LED;
ARCHITECTURE BHV OF CNT_10_LED IS
COMPONENT CNT_10 --計(jì)數(shù)器
PORT (CLK,RST,EN:IN STD_LOGIC;
DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0));
END COMPONENT CNT_10;
COMPONENT SEG7 --7段譯碼器
PORT (INDATA: IN STD_LOGIC_VECTOR(3 DOWNTO 0);
ODATA: OUT STD_LOGIC_VECTOR(6 DOWNTO 0));
END COMPONENT SEG7;
SIGNAL IKUN:STD_LOGIC_VECTOR(3 DOWNTO 0); --IKUN?? 敏感信號(hào)
BEGIN
U1:CNT_10 PORT MAP(CLK=>CLK0,RST=>RST0,EN=>EN0,DOUT=>IKUN);
U2:SEG7 PORT MAP(INDATA=>IKUN,ODATA=>DOUT0);
END ARCHITECTURE BHV ;
五、遇到的問(wèn)題及解決辦法
- Q10版本之后的Quartus在New中不直接提供軟件波形仿真,一般需要調(diào)用ModelSim軟件進(jìn)行操作:
????????解決辦法:按照?qǐng)D示依次點(diǎn)擊Tools->Options->General->EDA Tool Options->ModelSim 把路徑設(shè)置為ModelSim軟件所在處。
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-433690.html
- VHDL文本正確,工程路徑都沒問(wèn)題,波形輸出失敗,提示ModelSIM調(diào)用失?。?/strong>
????????解決辦法:檢查問(wèn)題1是否已經(jīng)解決,解決后關(guān)閉軟件,以管理員身份啟動(dòng)軟件,再次仿真。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-433690.html
到了這里,關(guān)于【EDA技術(shù)】 實(shí)驗(yàn)二 BCD碼輸出的60進(jìn)制計(jì)數(shù)器的VHDL的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!