第一篇:VHDL八位數(shù)碼管頻率計(jì)課程設(shè)計(jì)
一、課程設(shè)計(jì)要求
設(shè)計(jì)一個(gè)8位數(shù)碼管顯示的頻率計(jì)(頻率分辨率為1Hz)。
二、總體結(jié)構(gòu)框圖
系統(tǒng)時(shí)鐘分頻及控制待測(cè)頻率計(jì)數(shù)數(shù)據(jù)鎖存動(dòng)態(tài)掃描數(shù)碼管段選數(shù)碼管位選數(shù)碼管顯示
圖1 總體結(jié)構(gòu)框圖
三、課程設(shè)計(jì)原理
在電子技術(shù)中,頻率是最基本的參數(shù)之一,并且與許多點(diǎn)參量的測(cè)量方案、測(cè)量結(jié)果都有十分密切的關(guān)系,因此,頻率的測(cè)量就顯得尤為重要。測(cè)量頻率的方法有很多種,其中電子計(jì)數(shù)器測(cè)量頻率具有精度高、使用方便、測(cè)量迅速,以及便于實(shí)現(xiàn)測(cè)量過(guò)程自動(dòng)化等優(yōu)點(diǎn),是頻率測(cè)量的重要手段之一。
數(shù)字式頻率計(jì)的測(cè)量原理有兩類(lèi):一是直接測(cè)頻法,即在一定的閘門(mén)時(shí)間內(nèi)測(cè)量被測(cè)信號(hào)的脈沖個(gè)數(shù);二是間接測(cè)頻法即周期法,如周期測(cè)頻法。直接測(cè)頻法適用于高頻信號(hào)的頻率測(cè)量,通常采用計(jì)數(shù)器、數(shù)據(jù)鎖存器及控制電路實(shí)現(xiàn),并通過(guò)改變計(jì)數(shù)閥門(mén)的時(shí)間長(zhǎng)短以達(dá)到不同的測(cè)量精度;間接測(cè)頻法適用于低頻信號(hào)的頻率測(cè)量。
本次課程設(shè)計(jì)中使用的是直接測(cè)頻法,即用計(jì)數(shù)器在計(jì)算機(jī)1s內(nèi)輸入信號(hào)周期的個(gè)數(shù),其測(cè)頻范圍為0Hz-99999999Hz。
四、器件的選擇
1、裝有QuartusII軟件的計(jì)算機(jī)一臺(tái)。
2、芯片:本實(shí)驗(yàn)板中為EP芯片。
3、EDA實(shí)驗(yàn)箱一個(gè)。
4、下載接口是數(shù)字芯片的下載接口(JTAG)主要用于FPGA芯片的數(shù)據(jù)下載。
5、時(shí)鐘源。
五、功能模塊和信號(hào)仿真圖以及源程序
(1)系統(tǒng)時(shí)鐘分頻及控制的功能模塊圖及其源程序
圖2 功能模塊圖
作用:將試驗(yàn)箱上的50MHz的晶振分頻,輸出CLOCK為數(shù)碼管提供1kHz的動(dòng)態(tài)掃描頻率。CNT_EN輸出為0.05s的信號(hào),對(duì)頻率計(jì)中的32位十進(jìn)制計(jì)數(shù)器CNT10的ENA使能端進(jìn)行同步控制,當(dāng)TSTEN高電平時(shí)允許計(jì)數(shù),低電平時(shí)停止計(jì)數(shù),并保持其所計(jì)的脈沖數(shù)。在停止計(jì)數(shù)期間,首先需要一個(gè)鎖存信號(hào)LOAD的上跳沿將計(jì)數(shù)器在前一秒的計(jì)數(shù)值鎖存進(jìn)鎖存器REG32B中,并由外部的十進(jìn)制7段數(shù)碼管顯示計(jì)數(shù)值。設(shè)置鎖存器的好處是數(shù)據(jù)顯示穩(wěn)定,不會(huì)由于周期性的清零信號(hào)而不斷閃爍。鎖存信號(hào)后,必須有一個(gè)清零信號(hào)RST_CNT對(duì)計(jì)數(shù)器進(jìn)行清零,為下一秒的計(jì)數(shù)操作做準(zhǔn)備。該模塊的信號(hào)仿真圖如下:
圖3 仿真波形圖
源程序如下:
--分頻
library ieee;use ieee.std_logic_1164.all;entity fdivwangzheng is port(clk0:in std_logic;--輸入系統(tǒng)時(shí)鐘
clk1:out std_logic;--輸出1hz時(shí)鐘信號(hào)
clk2:out std_logic);--輸出顯示掃描時(shí)鐘信號(hào)
end fdivwangzheng;architecture a of fdivwangzheng is begin
p1:process(clk0)variable cnt:integer range 0 to 49999999;--分頻系數(shù)為24999999 variable ff:std_logic;begin if clk0'event and clk0='1' then if cnt<49999999 then cnt:=cnt+1;else cnt:=0;ff:=not ff;--反向 end if;end if;clk1<=ff;end process p1;p2:process(clk0)
variable cnn:integer range 0 to 999;--分頻系數(shù)為499 variable dd:std_logic;begin if clk0'event and clk0='1' then if cnn<999 then cnn:=cnn+1;else cnn:=0;dd:=not dd;--反向 end if;end if;clk2<=dd;end process p2;end a;
--測(cè)頻控制器(testctl.vhd)LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY TESTCTLwanzheng IS
PORT(CLKK : IN STD_LOGIC;--1Hz
CNT_EN,RST_CNT,LOAD : OUT STD_LOGIC);
END TESTCTLwanzheng;ARCHITECTURE behav OF TESTCTLwanzheng IS
SIGNAL DIV2CLK : STD_LOGIC;BEGIN
PROCESS(CLKK)
BEGIN
IF CLKK'EVENT AND CLKK = '1' THEN DIV2CLK <= NOT DIV2CLK;
END IF;
END PROCESS;
PROCESS(CLKK, DIV2CLK)
BEGIN
IF CLKK='0' AND Div2CLK='0' THEN RST_CNT <= '1';
ELSE RST_CNT <= '0';
END IF;
END PROCESS;
LOAD <= NOT DIV2CLK;
CNT_EN <= DIV2CLK;END behav;(2)十進(jìn)制計(jì)數(shù)器的功能模塊圖及其源程序
圖4 功能模塊圖
作用:當(dāng)使能端為高電平,清零端為低電平時(shí),實(shí)現(xiàn)十進(jìn)制計(jì)數(shù)功能。
第一個(gè)CNT10計(jì)數(shù)輸出CQ=9時(shí),下一秒時(shí)鐘上升沿到來(lái)時(shí),將產(chǎn)生一個(gè)CARRY_OUT信號(hào)作為下一個(gè)CNT10的時(shí)鐘信號(hào),同時(shí)CQ清零,依次遞推到8個(gè)CNT10。
當(dāng)清零端為低電平,使能端為低電平時(shí)停止計(jì)數(shù)。當(dāng)清零端為高電平時(shí),計(jì)數(shù)器清零。該模塊的信號(hào)仿真圖如下:
圖5 仿真波形圖
源程序如下:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY CNT10 IS PORT(CLK: IN STD_LOGIC;
CLR: IN STD_LOGIC;
ENA: IN STD_LOGIC;
CQ : OUT INTEGER RANGE 0 TO 9;
CARRY_OUT: OUT STD_LOGIC);END CNT10;ARCHITECTURE behav OF CNT10 IS SIGNAL CQI: INTEGER RANGE 0 TO 9;BEGIN PROCESS(CLR,CLK,ENA)BEGIN IF(CLR='1')THEN CQI<=0;ELSIF(CLK'EVENT AND CLK='1')THEN
IF(ENA='1')THEN
IF(CQI=9)THEN
CQI<=0;
CARRY_OUT<='1';
ELSE
CQI<=CQI+1;
CARRY_OUT<='0';
END IF;
END IF;END IF;END PROCESS;CQ<=CQI;END behav;
(3)32位鎖存器的功能模塊圖及其源程序
圖6 功能模塊圖
實(shí)現(xiàn)方式:LOAD信號(hào)上升沿到來(lái)時(shí)將對(duì)輸入到內(nèi)部的CNT10計(jì)數(shù)信號(hào)進(jìn)行鎖存。作用:鎖存信號(hào),并將結(jié)果輸出給SELTIME。該模塊的信號(hào)仿真圖如下:
圖7 仿真波形圖
源程序如下:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY REG32B IS
PORT(LOAD: IN STD_LOGIC;DIN: IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT: OUT STD_LOGIC_VECTOR(31 DOWNTO 0));END ENTITY REG32B;ARCHITECTURE behav OF REG32B IS BEGIN
PROCESS(LOAD,DIN)IS BEGIN
IF LOAD'EVENT AND LOAD='1' THEN DOUT<=DIN;
END IF;END PROCESS;END ARCHITECTURE behav;
(4)數(shù)碼管掃描的功能模塊圖及其源程序
圖8 功能模塊圖
作用:鎖存信號(hào)輸出DIN[31..0],然后由SELTIME進(jìn)行掃描輸出,當(dāng)SEL為”000”時(shí)選通第一個(gè)CNT10,輸出到LED7進(jìn)行譯碼輸出。依次類(lèi)推。該模塊的信號(hào)仿真圖如下:
圖9 仿真波形圖
源程序如下:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY SELTIME IS PORT(CLK : IN STD_LOGIC;
DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);
DAOUT: OUT STD_LOGIC_VECTOR(3 DOWNTO 0);
SEL : OUT STD_LOGIC_VECTOR(2 DOWNTO 0));END SELTIME;ARCHITECTURE behav OF SELTIME IS SIGNAL SEC : STD_LOGIC_VECTOR(2 DOWNTO 0);BEGIN PROCESS(CLK)BEGIN
IF(CLK'EVENT AND CLK='1')THEN
IF(SEC=“111”)THEN
SEC<=“000”;
ELSE
SEC<=SEC+1;
END IF;
END IF;END PROCESS;
PROCESS(SEC,DIN(31 DOWNTO 0))BEGIN CASE SEC IS WHEN “000”=>DAOUT<=DIN(3 DOWNTO 0);WHEN “001”=>DAOUT<=DIN(7 DOWNTO 4);WHEN “010”=>DAOUT<=DIN(11 DOWNTO 8);WHEN “011”=>DAOUT<=DIN(15 DOWNTO 12);WHEN “100”=>DAOUT<=DIN(19 DOWNTO 16);WHEN “101”=>DAOUT<=DIN(23 DOWNTO 20);WHEN “110”=>DAOUT<=DIN(27 DOWNTO 24);WHEN “111”=>DAOUT<=DIN(31 DOWNTO 28);WHEN OTHERS=>NULL;END CASE;END PROCESS;SEL<=SEC;END behav;
(5)七段數(shù)碼管譯碼顯示的功能模塊圖及其源程序
圖10 功能模塊圖
作用:將實(shí)驗(yàn)結(jié)果使用數(shù)碼管直觀的顯示出來(lái)。該模塊的信號(hào)仿真圖如下:
圖11 仿真波形圖
源程序如下:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY LED7 IS PORT(DIN:IN STD_LOGIC_VECTOR(3 DOWNTO 0);DOUT:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END LED7;ARCHITECTURE behav OF LED7 IS--SIGNAL LED7:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN PROCESS(DIN)BEGIN CASE DIN IS WHEN “0000”=>DOUT<=“0111111”;WHEN “0001”=>DOUT<=“0000110”;WHEN “0010”=>DOUT<=“1011011”;WHEN “0011”=>DOUT<=“1001111”;WHEN “0100”=>DOUT<=“1100110”;WHEN “0101”=>DOUT<=“1101101”;WHEN “0110”=>DOUT<=“1111101”;WHEN “0111”=>DOUT<=“0000111”;WHEN “1000”=>DOUT<=“1111111”;WHEN “1001”=>DOUT<=“1101111”;WHEN “1010”=>DOUT<=“1110111”;WHEN “1011”=>DOUT<=“1111100”;WHEN “1100”=>DOUT<=“0111001”;WHEN “1101”=>DOUT<=“1011110”;WHEN “1110”=>DOUT<=“1111001”;WHEN “1111”=>DOUT<=“1110001”;WHEN OTHERS=>NULL;END CASE;END PROCESS;END ARCHITECTURE behav;(6)3-8譯碼器的功能模塊圖及其源程序
圖12 功能模塊圖
作用:利用3-8譯碼器將數(shù)碼管的位選信號(hào)選通。該模塊的信號(hào)仿真圖如下:
圖13 仿真波形圖
源程序如下:
LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY LS138 IS
PORT(Q: IN STD_LOGIC_VECTOR(2 DOWNTO 0);
D: OUT STD_LOGIC_VECTOR(7 DOWNTO 0);
dp:OUT STD_LOGIC);END LS138;ARCHITECTURE behav OF LS138 IS BEGIN
WITH Q SELECT
D<=“11111110” WHEN “000”, “11111101” WHEN “001”, “11111011” WHEN “010”, “11110111” WHEN “011”, “11101111” WHEN “100”, “11011111” WHEN “101”, “10111111” WHEN “110”, “01111111” wHEN “111”, “11111111” WHEN OTHERS;WITH Q SELECT
dp<='1' WHEN “001”, '0' WHEN OTHERS;END behav;
六、頂層模塊圖
圖14 總體設(shè)計(jì)頂層模塊圖
其中8個(gè)十進(jìn)制計(jì)數(shù)器模塊JSQ的底層模塊圖如圖15所示:
圖15 計(jì)數(shù)器模塊原理圖
本次課程設(shè)計(jì)的時(shí)鐘信號(hào)由試驗(yàn)箱上面的5MHz的晶振提供,經(jīng)過(guò)系統(tǒng)時(shí)鐘和控制模塊后分別產(chǎn)生0.05Hz和10kHz的脈沖信號(hào)0.05Hz的脈沖信號(hào)十進(jìn)制計(jì)數(shù)器的使能信號(hào),使計(jì)數(shù)器統(tǒng)計(jì)出待測(cè)信號(hào)在1s脈寬之間的脈沖數(shù)目。再由計(jì)數(shù)模塊將測(cè)得的信號(hào)傳送給數(shù)碼管顯示部分,通過(guò)譯碼模塊產(chǎn)生可以在數(shù)碼管上顯示的BCD碼。而1kHz是作為數(shù)碼管動(dòng)態(tài)掃描的頻率,由于人的視覺(jué)暫留現(xiàn)象,頻率較高時(shí),數(shù)碼管看起來(lái)就是連續(xù)發(fā)光。本設(shè)計(jì)中使個(gè)位顯示為數(shù)碼管的小數(shù)點(diǎn)后面一位,由此實(shí)現(xiàn)了頻率分辨率為1Hz的頻率計(jì)設(shè)計(jì)。
結(jié)論
EDA技術(shù)是電子設(shè)計(jì)的發(fā)展趨勢(shì),利用EDA工具可以代替設(shè)計(jì)者完成電子系統(tǒng)設(shè)計(jì)中的大部分工作。EDA工具從數(shù)字系統(tǒng)設(shè)計(jì)的單一領(lǐng)域,發(fā)展到今天,應(yīng)用范圍己涉及模擬、微波等多個(gè)領(lǐng)域,可以實(shí)現(xiàn)各個(gè)領(lǐng)域電子系統(tǒng)設(shè)計(jì)的測(cè)試、設(shè)計(jì)仿真和布局布線等,這些都是我在這次課設(shè)中深刻體會(huì)到的。經(jīng)過(guò)這次課程設(shè)計(jì),讓我真正認(rèn)識(shí)了EDA這門(mén)學(xué)科,了解到這種方式下的設(shè)計(jì)方案,硬件電路簡(jiǎn)潔,集成度高,體現(xiàn)了當(dāng)今社會(huì)所需的先進(jìn)技術(shù),日后必定在有著廣闊的發(fā)展空間。
通過(guò)這次對(duì)EDA課程設(shè)計(jì)的進(jìn)一步操作,能更好的在Quartus II上進(jìn)行VHDL程序的編譯及各個(gè)模塊的仿真,雖然在實(shí)際操作過(guò)程中由于粗心造成了程序的缺失和錯(cuò)誤,但都在老師和同學(xué)的幫助下一一解決了。很好地鞏固了我們學(xué)過(guò)的專(zhuān)業(yè)知識(shí),使我對(duì)數(shù)字系統(tǒng)結(jié)構(gòu)也有了更進(jìn)一步的了解和認(rèn)識(shí),同時(shí)對(duì)數(shù)據(jù)庫(kù)軟件EDA技術(shù)、VHDL等系列知識(shí)都有了一定的了解。使用EDA技術(shù)開(kāi)發(fā)頁(yè)面的能力也有了很大提高,也使我們把理論與實(shí)踐從真正意義上相結(jié)合了起來(lái);考驗(yàn)了我們借助互聯(lián)網(wǎng)絡(luò)搜集、查閱相關(guān)文獻(xiàn)資料,和組織材料的綜合能力。
在這次課程設(shè)計(jì)中,雖然應(yīng)用的都是在書(shū)本上學(xué)過(guò)的知識(shí),但是只有應(yīng)用到實(shí)際中才算真正的學(xué)懂了這些知識(shí)。本次數(shù)字頻率計(jì)的涉及到了VHDL語(yǔ)言、Quartus II軟件,EDA技術(shù)等。涉及了微機(jī)原理和EDA所學(xué)的大部分內(nèi)容。通過(guò)這次課程設(shè)計(jì)實(shí)踐鞏固了學(xué)過(guò)的知識(shí)并能夠較好的利用。課程設(shè)計(jì)實(shí)踐不單是將所學(xué)的知識(shí)應(yīng)用于實(shí)際,在設(shè)計(jì)的過(guò)程中,只擁有理論知識(shí)是不夠的。邏輯思維、電路設(shè)計(jì)的步驟和方法、考慮問(wèn)題的思路和角度等也是很重要,需要我們著重注意鍛煉的能力。在這次設(shè)計(jì)中還發(fā)現(xiàn)理論與實(shí)際常常常存在很大差距,為了使電路正常工作,必須靈活運(yùn)用原理找出解決方法。
在課題設(shè)計(jì)中,通過(guò)使用Quartus II這個(gè)完全集成化、易學(xué)易用的可編程邏輯設(shè)計(jì)環(huán)境,利用VHDL語(yǔ)言設(shè)計(jì)完成八位十進(jìn)制數(shù)字頻率計(jì),能夠較好的測(cè)定所給頻率,并且具有自動(dòng)清零和自動(dòng)測(cè)試的功能,基本符合此次課程設(shè)計(jì)給出的要求。
第二篇:VHDL課程設(shè)計(jì)報(bào)告 頻率計(jì)
目錄
1.前言...........................................................................................................................2 2.設(shè)計(jì)要求...................................................................................................................2 3.整體設(shè)計(jì)..................................................................................................................3 4.設(shè)計(jì)原理...................................................................................................................3 5.設(shè)計(jì)程序...................................................................................................................3
5.1頂層文件.............................................................................................................3 5.2 8位是進(jìn)制計(jì)數(shù)器..............................................................................................4 5.3 10進(jìn)制計(jì)數(shù)器...................................................................................................5 5.4 測(cè)頻控制電路.....................................................................................................6 5.5 32位鎖存器及其控制器.....................................................................................6
6.引腳鎖定...................................................................................................................8 7.綜合結(jié)果...................................................................................................................8
7.1 RTL電路.............................................................................................................8 7.2 測(cè)頻控制電路.....................................................................................................9 7.3 8位十進(jìn)制計(jì)數(shù)器..............................................................................................9 7.3 32位鎖存器......................................................................................................9
8.實(shí)驗(yàn)結(jié)果.................................................................................................................10 7.實(shí)驗(yàn)總結(jié)...................................................................................................................10 參考文獻(xiàn)......................................................................................................................12
自適應(yīng)數(shù)字頻率計(jì)數(shù)器設(shè)計(jì)
1.前言
傳統(tǒng)的數(shù)字頻率計(jì)一般是由分離元件搭接而成,用到的器件較多,連線比較復(fù)雜,而且會(huì)產(chǎn)生比較大的延時(shí),造成測(cè)量誤差大、可靠性差。后來(lái)隨著單片機(jī)的大規(guī)模的應(yīng)用, 出現(xiàn)了不少用單片機(jī)控制的頻率測(cè)量系統(tǒng)。相對(duì)于以前用分離元件搭接起來(lái)的頻率測(cè)量系統(tǒng), 單片機(jī)控制的頻率測(cè)量系統(tǒng)在頻率測(cè)量范圍、頻率測(cè)量精度和頻率測(cè)量速度上都有了很大的提高。但由于單片機(jī)工作頻率的限制、單片機(jī)內(nèi)部計(jì)數(shù)器位數(shù)的限制等因素, 由單片機(jī)控制的頻率測(cè)量系統(tǒng)無(wú)法在頻率測(cè)量范圍、頻率測(cè)量精度和頻率測(cè)量速度上取得重大突破。若再增加別的器件, 以彌補(bǔ)單片機(jī)的不足, 不僅會(huì)大大增加系統(tǒng)的復(fù)雜性, 而且不利于系統(tǒng)的集成化。以E D A 工具作為開(kāi)發(fā)平臺(tái),運(yùn)用V H D L 語(yǔ)言,將使整個(gè)系統(tǒng)大大簡(jiǎn)化,從而提高整體的性能和可靠性。本課題采用的是等精度數(shù)字頻率計(jì),在一片F(xiàn)PGA開(kāi)發(fā)板里實(shí)現(xiàn)了數(shù)字頻率計(jì)的絕大部分功能, 它的集成度遠(yuǎn)遠(yuǎn)超過(guò)了以往的數(shù)字頻率計(jì)。又由于數(shù)字頻率計(jì)最初的實(shí)現(xiàn)形式是用硬件描述語(yǔ)言寫(xiě)成的程序, 具有通用性和可重用性。所以在外在的條件(如基準(zhǔn)頻率的提高, 基準(zhǔn)頻率精度的提高)的允許下,只需對(duì)源程序作很小的改動(dòng), 就可以使數(shù)字頻率計(jì)的精度提高幾個(gè)數(shù)量級(jí)。同時(shí)對(duì)于頻率精度要求不高的場(chǎng)合, 可以修改源程序, 使之可以用較小的器件實(shí)現(xiàn), 從而降低系統(tǒng)的整體造價(jià)。
2.設(shè)計(jì)要求
設(shè)計(jì)一個(gè)頻率計(jì),頻率測(cè)量范圍為1-9999KHZ,量程分別為10、100、1M三檔,要求如下: a.當(dāng)讀數(shù)大于999時(shí),頻率計(jì)處于超量程狀態(tài),下一次測(cè)量時(shí),量程自動(dòng)增大1檔 b.當(dāng)讀數(shù)小于099時(shí),頻率計(jì)處于欠量程狀態(tài),下一次測(cè)量時(shí),量程自動(dòng)減小1檔
c.當(dāng)超過(guò)頻率范圍時(shí),顯示器自動(dòng)溢出
3.整體設(shè)計(jì)
當(dāng)被測(cè)頻率進(jìn)入時(shí)候,檔位1、2能自動(dòng)換擋實(shí)現(xiàn)功能,在檔位1中,有一個(gè)LED燈亮(表示Hz);檔位2中有2個(gè)LED燈亮(表示kHz);當(dāng)計(jì)數(shù)頻率超出9999kHz的時(shí)候,顯示“E”而且LED燈全部熄滅,表示溢出功能。在程序代碼中,必須要清晰表示出計(jì)數(shù)的運(yùn)行狀況。
檔位1:當(dāng)被測(cè)頻率為0—9999Hz時(shí)候,直接顯示f x的值(單位為Hz); 檔位2:當(dāng)被測(cè)頻率為10k—9999kHz時(shí)候,顯示10-9999(單位kHz);
4.設(shè)計(jì)原理
根據(jù)頻率的定義和頻率測(cè)量的基本原理,測(cè)定信號(hào)的頻率必須有一個(gè)脈寬為1 秒的輸入信號(hào)脈沖計(jì)數(shù)允許的信號(hào);1 秒計(jì)數(shù)結(jié)束后,計(jì)數(shù)值被鎖入鎖存器,計(jì)數(shù)器清0,為下一測(cè)頻計(jì)數(shù)周期作好準(zhǔn)備。測(cè)頻控制信號(hào)可以由一個(gè)獨(dú)立的發(fā)生器來(lái)產(chǎn)生。
5.設(shè)計(jì)程序
5.1頂層文件
LIBRARY IEEE;--頻率計(jì)頂層文件 LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY FREQTEST IS PORT(CLK1HZ : IN STD_LOGIC;FSIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LED : OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END FREQTEST;ARCHITECTURE struc OF FREQTEST IS COMPONENT FTCTRL PORT(CLKK : IN STD_LOGIC;--1Hz CNT_EN : OUT STD_LOGIC;--計(jì)數(shù)器時(shí)鐘使能 RST_CNT : OUT STD_LOGIC;--計(jì)數(shù)器清零 Load : OUT STD_LOGIC);--輸出鎖存信號(hào) END COMPONENT;COMPONENT COUNTER PORT(FIN : IN STD_LOGIC;--時(shí)鐘信號(hào) CLR : IN STD_LOGIC;--清零信號(hào) ENABL : IN STD_LOGIC;--計(jì)數(shù)使能信號(hào)
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));--計(jì)數(shù)結(jié)果 END COMPONENT;COMPONENT REG32B PORT(LK : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LEDOUT : OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END COMPONENT;SIGNAL TSTEN1 : STD_LOGIC;SIGNAL CLR_CNT1 : STD_LOGIC;SIGNAL Load1 : STD_LOGIC;SIGNAL DTO1 : STD_LOGIC_VECTOR(31 DOWNTO 0);SIGNAL CARRY_OUT1 : STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN U1 : FTCTRL PORT MAP(CLKK =>CLK1HZ,CNT_EN=>TSTEN1, RST_CNT =>CLR_CNT1,Load =>Load1);U2 : REG32B PORT MAP(LK => Load1, DIN=>DTO1, DOUT => DOUT,LEDOUT=>LED);
U3 : COUNTER PORT MAP(FIN => FSIN, CLR => CLR_CNT1, ENABL => TSTEN1, DOUT=>DTO1);END struc;
5.2 8位是進(jìn)制計(jì)數(shù)器
LIBRARY IEEE;--8位十進(jìn)制計(jì)數(shù)器 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER IS PORT(FIN : IN STD_LOGIC;--時(shí)鐘信號(hào) CLR : IN STD_LOGIC;--清零信號(hào) ENABL : IN STD_LOGIC;--計(jì)數(shù)使能信號(hào)
DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0));--計(jì)數(shù)結(jié)果 END COUNTER;ARCHITECTURE behav OF COUNTER IS
COMPONENT COUNTER10 IS PORT(FIN : IN STD_LOGIC;--時(shí)鐘信號(hào) CLR : IN STD_LOGIC;--清零信號(hào) ENABL : IN STD_LOGIC;--計(jì)數(shù)使能信號(hào)
DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--計(jì)數(shù)結(jié)果 COUT : OUT STD_LOGIC);END COMPONENT;
SIGNAL CLK1,CLK2,CLK3,CLK4,CLK5,CLK6,CLK7: STD_LOGIC;BEGIN u1 : COUNTER10 PORT MAP(FIN=>FIN,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(3 DOWNTO 0),COUT=>CLK1);u2 : COUNTER10 PORT MAP(FIN=>CLK1,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(7 DOWNTO 4),COUT=>CLK2);u3 : COUNTER10 PORT MAP(FIN=>CLK2,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(11 DOWNTO 8),COUT=>CLK3);u4 : COUNTER10 PORT MAP(FIN=>CLK3,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(15 DOWNTO 12),COUT=>CLK4);u5 : COUNTER10 PORT MAP(FIN=>CLK4,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(19 DOWNTO 16),COUT=>CLK5);u6 : COUNTER10 PORT MAP(FIN=>CLK5,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(23 DOWNTO 20),COUT=>CLK6);u7 : COUNTER10 PORT MAP(FIN=>CLK6,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(27 DOWNTO 24),COUT=>CLK7);u8 : COUNTER10 PORT MAP(FIN=>CLK7,CLR=>CLR,ENABL=>ENABL,DOUT=>DOUT(31 DOWNTO 28));
END ARCHITECTURE behav;
5.3 10進(jìn)制計(jì)數(shù)器
LIBRARY IEEE;--10位計(jì)數(shù)器 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY COUNTER10 IS PORT(FIN : IN STD_LOGIC;--時(shí)鐘信號(hào) CLR : IN STD_LOGIC;--清零信號(hào) ENABL : IN STD_LOGIC;--計(jì)數(shù)使能信號(hào)
DOUT : OUT STD_LOGIC_VECTOR(3 DOWNTO 0);--計(jì)數(shù)結(jié)果 COUT : OUT STD_LOGIC);END COUNTER10;ARCHITECTURE behav OF COUNTER10 IS SIGNAL CQI : STD_LOGIC_VECTOR(3 DOWNTO 0);BEGIN PROCESS(FIN, CLR, ENABL)BEGIN IF CLR = '1' THEN CQI <=(OTHERS=>'0');--清零 ELSIF FIN'EVENT AND FIN = '1' THEN IF ENABL = '1' THEN IF CQI<9 THEN CQI <= CQI + 1;ELSE CQI <=(OTHERS=>'0');END IF;END IF;END IF;
IF CQI=“1001” THEN COUT<='1';ELSE COUT<='0';END IF;END PROCESS;DOUT <= CQI;END behav;
5.4 測(cè)頻控制電路
LIBRARY IEEE;--測(cè)頻控制電路 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY FTCTRL IS PORT(CLKK : IN STD_LOGIC;--1Hz CNT_EN : OUT STD_LOGIC;--計(jì)數(shù)器時(shí)鐘使能 RST_CNT : OUT STD_LOGIC;--計(jì)數(shù)器清零 Load : OUT STD_LOGIC);--輸出鎖存信號(hào) END FTCTRL;ARCHITECTURE behav OF FTCTRL IS SIGNAL Div2CLK : STD_LOGIC;BEGIN PROCESS(CLKK)BEGIN IF CLKK'EVENT AND CLKK = '1' THEN--1Hz時(shí)鐘2分頻 Div2CLK <= NOT Div2CLK;END IF;END PROCESS;PROCESS(CLKK, Div2CLK)BEGIN IF CLKK='0' AND Div2CLK='0' THEN RST_CNT<='1';--產(chǎn)生計(jì)數(shù)器清零信號(hào) ELSE RST_CNT <= '0';END IF;END PROCESS;Load <= NOT Div2CLK;CNT_EN <= Div2CLK;END behav;
5.5 32位鎖存器及其控制器
LIBRARY IEEE;--32位鎖存器及控制器 USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY REG32B IS PORT(LK : IN STD_LOGIC;DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0);DOUT : OUT STD_LOGIC_VECTOR(15 DOWNTO 0);LEDOUT : OUT STD_LOGIC_VECTOR(1 DOWNTO 0));END REG32B;ARCHITECTURE behav OF REG32B IS SIGNAL DD : STD_LOGIC_VECTOR(31 DOWNTO 0);BEGIN
PROCESS(LK, DIN)BEGIN IF LK'EVENT AND LK = '1' THEN DD<=DIN;END IF;if DD(31 DOWNTO 28)=“0000” then IF DD(27 DOWNTO 16)=“000000000000” THEN DOUT<=DD(15 DOWNTO 0);LEDOUT<=“01”;ELSIF DD(27 DOWNTO 16)/=“000000000000” THEN DOUT<=DD(27 DOWNTO 12);LEDOUT<=“11”;end if;else DOUT(15 DOWNTO 0)<=“***0”;LEDOUT<=“00”;END IF;END PROCESS;END behav;
6.引腳鎖定
7.綜合結(jié)果
7.1 RTL電路
7.2 測(cè)頻控制電路
7.3 8位十進(jìn)制計(jì)數(shù)器
7.3 32位鎖存器
8.實(shí)驗(yàn)結(jié)果
當(dāng)計(jì)數(shù)頻率為4Hz(范圍在0-9999Hz)的時(shí)候,此時(shí)LED燈有一個(gè)亮,計(jì)數(shù)為:0004;當(dāng)計(jì)數(shù)頻率為500KHz(范圍在10K-9999KHz)的時(shí)候,此時(shí)設(shè)定兩個(gè)LED燈都亮,計(jì)數(shù)為0500;當(dāng)計(jì)數(shù)頻率大于9999KHz的時(shí)候,設(shè)定此時(shí)兩個(gè)LED燈都處于熄滅狀態(tài),而計(jì)數(shù)則輸出一個(gè)‘E’值,表示范圍超出計(jì)數(shù)范圍。
7.實(shí)驗(yàn)總結(jié)
經(jīng)系統(tǒng)測(cè)試表明,本圖頻率計(jì)的各項(xiàng)功能正常,能實(shí)現(xiàn)對(duì)頻率的0~9999kHz頻率范圍的測(cè)量,并通過(guò)LED指示和數(shù)碼管顯示,操作簡(jiǎn)單,是理想頻率計(jì)解決方案。
經(jīng)過(guò)一個(gè)多星期的努力,本設(shè)計(jì)系統(tǒng)終于完成了。通過(guò)該課程設(shè)計(jì),掌握了編譯程序工作的基本過(guò)程及其各階段的基本任務(wù),熟悉了VHDL程序開(kāi)發(fā)的總流程框圖,了解了編譯程序的生成過(guò)程及其相關(guān)的技術(shù),對(duì)課本上的知識(shí)也有了更深的理解。老師常說(shuō),課本上的知識(shí)是機(jī)械的,要學(xué)會(huì)去運(yùn)用,要舉一反三?,F(xiàn)在終于深刻的了解了這句話。經(jīng)過(guò)這次的課程設(shè)計(jì),發(fā)現(xiàn)書(shū)本上很深?yuàn)W的知識(shí)變的更為簡(jiǎn)單,同樣,對(duì)實(shí)驗(yàn)原理也了有更深的理解。知道和理解了該理論在計(jì)算機(jī)中是怎樣執(zhí)行的,對(duì)該理論在實(shí)踐中的應(yīng)用有深刻的理解。通過(guò)該課程設(shè)計(jì),把死板的課本知識(shí)變得生動(dòng)有趣,激發(fā)了學(xué)習(xí)的積極性。能夠把課堂上學(xué)的知識(shí)通過(guò)自己設(shè)計(jì)的程序表示出來(lái),加深了對(duì)理論知識(shí)的理解。
課程設(shè)計(jì)中的電路和程序比較復(fù)雜,因此調(diào)試的過(guò)程更是考驗(yàn)我們耐性和細(xì)心。除了課堂外,課程設(shè)計(jì)是最能學(xué)到東西的,最考驗(yàn)人的。在做課程設(shè)計(jì)的這段時(shí)間,時(shí)刻都感到自己學(xué)的知識(shí)有多么的貧瘠。經(jīng)過(guò)這次課程設(shè)計(jì),讓我對(duì)VHDL語(yǔ)言和FPGA有了更深的認(rèn)識(shí),操作能力有了一定的提高。明白了,要想是寫(xiě)出的代碼能運(yùn)行,需要耐心細(xì)心,毅力以及充沛的體力。只有經(jīng)過(guò)多次編輯,多次編譯,再多次運(yùn)行,才能編寫(xiě)出更好的程序,有時(shí)候需要多次的更正才能達(dá)到所要的運(yùn)行結(jié)果。
參考文獻(xiàn)
[1] 潘松、黃繼業(yè),EDA技術(shù)應(yīng)用教程 VHDL篇[J].北京:高等教育出版社.2010
[2] 徐成劉彥李仁發(fā),一種全同步數(shù)字頻率測(cè)量方法的研究[J].北京:高等教育出版社.2004 [3] 李云鵬王思明,基于FPGA 的等精度頻率計(jì)設(shè)計(jì)[J].北京:高等教育出版社.2007
第三篇:EDA課程設(shè)計(jì)八位乘法器
EDA課程設(shè)計(jì)報(bào)告
實(shí)驗(yàn)名稱(chēng):八位乘法器 實(shí)驗(yàn)地點(diǎn):@@@@ 班級(jí):@@@@@ 學(xué)號(hào):@@@@@ 姓名:@@@@
目錄
一.引言
1.1 EDA技術(shù)的概念?? 1.2 EDA技術(shù)的特點(diǎn)?? 1.3 EDA設(shè)計(jì)流程?? 1.4 VHDL介紹??
二. 八位乘法器的設(shè)計(jì)要求與設(shè)計(jì)思路??2.1 設(shè)計(jì)目的??
2.2 設(shè)計(jì)要求??
三. 八位乘法器的綜合設(shè)計(jì)??
3.1 八位乘法器功能??
3.2 八位乘法器設(shè)計(jì)方案??
3.3 八位乘法器實(shí)體設(shè)計(jì)??
3.4 八位乘法器VHDL設(shè)計(jì)??
3.5八位乘法器仿真圖形?? 心得體會(huì)?? 參考文獻(xiàn)??
一、引言
1.1 EDA技術(shù)的概念
EDA是電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation)的縮寫(xiě),在20世紀(jì)90年代初從計(jì)算機(jī)輔助設(shè)計(jì)(CAD)、計(jì)算機(jī)輔助制造(CAM)、計(jì)算機(jī)輔助測(cè)試(CAT)和計(jì)算機(jī)輔助工程(CAE)的概念發(fā)展而來(lái)的。EDA技術(shù)就是以計(jì)算機(jī)為工具,設(shè)計(jì)者在EDA軟件平臺(tái)上,用硬件描述語(yǔ)言HDL完成設(shè)計(jì)文件,然后由計(jì)算機(jī)自動(dòng)地完成邏輯編譯、化簡(jiǎn)、分割、綜合、優(yōu)化、布局、布線和仿真,直至對(duì)于特定目標(biāo)芯片的適配編譯、邏輯映射和編程下載等工作。
1.2 EDA技術(shù)的特點(diǎn)
利用EDA技術(shù)進(jìn)行電子系統(tǒng)的設(shè)計(jì),具有以下幾個(gè)特點(diǎn):① 用軟件的方式設(shè)計(jì)硬件;② 用軟件方式設(shè)計(jì)的系統(tǒng)到硬件系統(tǒng)的轉(zhuǎn)換是由有關(guān)的開(kāi)發(fā)軟件自動(dòng)完成的;③ 設(shè)計(jì)過(guò)程中可用有關(guān)軟件進(jìn)行各種仿真;④ 系統(tǒng)可現(xiàn)場(chǎng)編程,在線升級(jí);⑤ 整個(gè)系統(tǒng)可集成在一個(gè)芯片上,體積小、功耗低、可靠性高。因此,EDA技術(shù)是現(xiàn)代電子設(shè)計(jì)的發(fā)展趨勢(shì)。1.3 EDA設(shè)計(jì)流程 典型的EDA設(shè)計(jì)流程如下:
1、文本/原理圖編輯與修改。首先利用EDA工具的文本或圖形編輯器將設(shè)計(jì)者的設(shè)計(jì)意圖用文本或圖形方式表達(dá)出來(lái)。
2、編譯。完成設(shè)計(jì)描述后即可通過(guò)編譯器進(jìn)行排錯(cuò)編譯,變成特定的文本格式,為下一步的綜合做準(zhǔn)備。
3、綜合。將軟件設(shè)計(jì)與硬件的可實(shí)現(xiàn)性掛鉤,是將軟件轉(zhuǎn)化為硬件電路的關(guān)鍵步驟。
4、行為仿真和功能仿真。利用產(chǎn)生的網(wǎng)表文件進(jìn)行功能仿真,以便了解設(shè)計(jì)描述與設(shè)計(jì)意圖的一致性。
5、適配。利用FPGA/CPLD布局布線適配器將綜合后的網(wǎng)表文件針對(duì)某
一具體的目標(biāo)器件進(jìn)行邏輯映射操作,其中包括底層器件配臵、邏輯分割、邏輯優(yōu)化、布局布線。適配報(bào)告指明了芯片內(nèi)資源的分配與利用、引腳鎖定、設(shè)計(jì)的布爾方程描述情況。
6、功能仿真和時(shí)序仿真。
7、下載。如果以上的所有過(guò)程都沒(méi)有發(fā)現(xiàn)問(wèn)題,就可以將適配器產(chǎn)生的下載文件通過(guò)FPGA/CPLD下載電纜載入目標(biāo)芯片中。
8、硬件仿真與測(cè)試。1.4硬件描述語(yǔ)言(VHDL)
VHDL(Very-High-Speed Integrated Circuit Hardware Description Language)主要用于描述數(shù)字系統(tǒng)的結(jié)構(gòu),行為,功能和接口。除了含有許多具有硬件特征的語(yǔ)句外,VHDL的語(yǔ)言形式和描述風(fēng)格與句法是十分類(lèi)似于一般的計(jì)算機(jī)高級(jí)語(yǔ)言。VHDL的程序結(jié)構(gòu)特點(diǎn)是將一項(xiàng)工程設(shè)計(jì),或稱(chēng)設(shè)計(jì)實(shí)體(可以是一個(gè)元件,一個(gè)電路模塊或一個(gè)系統(tǒng))分成外部(或稱(chēng)可是部分,及端口)和內(nèi)部(或稱(chēng)不可視部分),既涉及實(shí)體的內(nèi)部功能和算法完成部分。在對(duì)一個(gè)設(shè)計(jì)實(shí)體定義了外部界面后,一旦其內(nèi)部開(kāi)發(fā)完成后,其他的設(shè)計(jì)就可以直接調(diào)用這個(gè)實(shí)體。這種將設(shè)計(jì)實(shí)體分成內(nèi)外部分的概念是VHDL系統(tǒng)設(shè)計(jì)的基本。
1.用VHDL代碼而不是用原理圖進(jìn)行設(shè)計(jì),意味著整個(gè)電路板的模型及性能可用計(jì)算機(jī)模擬進(jìn)行驗(yàn)證。
2.VHDL元件的設(shè)計(jì)與工藝無(wú)關(guān),與工藝獨(dú)立,方便工藝轉(zhuǎn)換。3.VHDL支持各種設(shè)計(jì)方法,自頂向下、自底向上或者混合的都可以。4.可以進(jìn)行從系統(tǒng)級(jí)到邏輯級(jí)的描述,即混合描述。
5.VHDL區(qū)別于其他的HDL,已形成標(biāo)準(zhǔn),其代碼在不同的系統(tǒng)中可交換建模。二、八位乘法器的設(shè)計(jì)要求與設(shè)計(jì)思路
2.1 設(shè)計(jì)目的
本次設(shè)計(jì)的目的就是通過(guò)實(shí)踐深入理解EDA技術(shù)并掌握VHDL硬件描述語(yǔ)言的設(shè)計(jì)方法和思想。通過(guò)學(xué)習(xí)的VHDL語(yǔ)言結(jié)合電子電路的設(shè)計(jì)知識(shí)理論聯(lián)系實(shí)際,掌握所學(xué)的課程知識(shí)和基本單元電路的綜合設(shè)計(jì)應(yīng)用。通過(guò)對(duì)八位乘法器的設(shè)計(jì),鞏固和綜合運(yùn)用所學(xué)知識(shí),提高設(shè)計(jì)能力,提高分析、解決
計(jì)算機(jī)技術(shù)實(shí)際問(wèn)題的獨(dú)立工作能力。2.2 設(shè)計(jì)要求。
設(shè)計(jì)一個(gè)乘法器的模塊,接受實(shí)驗(yàn)系統(tǒng)上的連續(xù)脈沖,當(dāng)給定啟動(dòng)/清零指令時(shí),能自動(dòng)發(fā)出CLK信號(hào)驅(qū)動(dòng)乘法預(yù)算,當(dāng)8個(gè)脈沖后自動(dòng)停止。設(shè)計(jì)一個(gè)純組合電路的8*8等于16位的乘法器(選擇不同的流水線方式),具體說(shuō)明并比較這幾種乘法器的邏輯資源占用情況和運(yùn)行速度情況。通過(guò)獨(dú)立的設(shè)計(jì),能夠完整的完成老師分配的課程設(shè)計(jì)任務(wù)。通過(guò)對(duì)電梯控制系統(tǒng)的設(shè)計(jì),掌握所學(xué)EDA課程的基本知識(shí)和對(duì)VHDL語(yǔ)言的綜合設(shè)計(jì)應(yīng)用。通過(guò)課程設(shè)計(jì),提高設(shè)計(jì)能力,提高分析解決實(shí)際問(wèn)題的能力,并在設(shè)計(jì)中了解硬件編程的流程和思路,為以后工作和發(fā)揮技術(shù)打下基礎(chǔ)。三、八位乘法器的綜合設(shè)計(jì)
3.1 八位乘法器功能
由8位加法器構(gòu)成的以時(shí)序邏輯方式設(shè)計(jì)的8位乘法器,此乘法器具有一定的實(shí)用價(jià)值。其乘法原理是:乘法通過(guò)逐項(xiàng)位移相加原理來(lái)實(shí)現(xiàn),從被乘數(shù)的最低位開(kāi)始,若為1,則乘數(shù)左移后與上一次和相加;若為0,左移后以全零相加,直至被乘數(shù)的最高位。圖中,ARICTL是乘法運(yùn)算控制電路,它的START(可鎖定于引腳I/O 49)信號(hào)的上跳沿與高電平有兩個(gè)功能,即16位寄存器清零和被乘數(shù)A[7..0]向移位寄存器SREG8B加載:它的低電平則作為乘法使能信號(hào)。乘法時(shí)鐘信號(hào)從ARICTL的CLK輸入。當(dāng)被乘數(shù)加載于8位右移寄存器SREG8B后,隨著每一時(shí)鐘節(jié)拍,最低位在前,由低位至高位逐位移出。當(dāng)為1時(shí),與門(mén)ANDARITH打開(kāi),8為乘數(shù)B[7..0]在同一節(jié)拍進(jìn)入8位加法器,與上一次鎖存在16位鎖存器REG16B中的高8位進(jìn)行相加,其和在下一時(shí)鐘節(jié)拍的上升沿被鎖進(jìn)此鎖存器。而當(dāng)被乘數(shù)移出位為0時(shí),與門(mén)全零輸出。如此往復(fù),直至8個(gè)時(shí)鐘脈沖后,由ARICTL的控制,乘法運(yùn)算過(guò)程自動(dòng)中止。ARIEND輸出高電平,以此可點(diǎn)亮一發(fā)光管,以示乘法結(jié)束。此時(shí)REG16B的輸出值即為最后乘積。
3.2 八位乘法器設(shè)計(jì)方案
方案一:八位直接寬位加法器,它的速度較快,但十分耗費(fèi)硬件資源,對(duì)于工業(yè)化設(shè)計(jì)是不合理的。
方案二:由兩個(gè)四位加法器組合八位加法器,其中四位加法器是四位二進(jìn)制并行加法器,它的原理簡(jiǎn)單,資源利用率和進(jìn)位速度等方面較好,綜合各方面的考慮,決定采用第二種方案。
3.3 八位加法器設(shè)計(jì)思路
純組合邏輯構(gòu)成的乘法器雖然工作速度較快,但過(guò)于占用硬件資源,難以實(shí)現(xiàn)寬位乘法器,由八位加法器構(gòu)成的以時(shí)序邏輯方式設(shè)計(jì)的八位乘法器,具有一定的使用價(jià)值。而且由FPGA構(gòu)成實(shí)驗(yàn)系統(tǒng)后,可以很容易的用ASIC大型集成芯片來(lái)完成,性價(jià)比高,可操作性強(qiáng)。其乘法原理是:乘法通過(guò)逐項(xiàng)移位相加原理來(lái)完成,從被乘數(shù)的最低位開(kāi)始,若為1,則乘數(shù)左移后于上一次的和相加;若為0左移后以全零相加,直至被乘數(shù)的最高位。3.5八位乘法器各功能模塊VHDL描述
1.library ieee;--四位二進(jìn)制并行加法器 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity add4b is port(cin:in std_logic;a,b:in std_logic_vector(3 downto 0);s:out std_logic_vector(3 downto 0);cout:out std_logic);end;architecture one of add4b is signal sint,aa,bb:std_logic_vector(4 downto 0);begin aa<='0' & a;bb<='0' & b;sint<=aa+bb+cin;5
s<=sint(3 downto 0);cout<=sint(4);end;2.library ieee--由兩個(gè)四位二進(jìn)制并行加法器級(jí)聯(lián)而成的八位二進(jìn)制加法器;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity adder8b is port(cin:in std_logic;a,b:in std_logic_vector(7 downto 0);s:out std_logic_vector(7 downto 0);cout:out std_logic);end;architecture one of adder8b is component add4b--對(duì)要調(diào)用的元件add4b的端口進(jìn)行說(shuō)明
port(cin:in std_logic;a,b:in std_logic_vector(3 downto 0);s:out std_logic_vector(3 downto 0);cout:out std_logic);end component;signal carryout: std_logic;begin u1:add4b port map(cin,a(3 downto 0),b(3 downto 0),s(3 downto 0),carryout);u2:add4b port map(carryout,a(7 downto 4),b(7 downto 4),s(7 downto 4),cout);end;3.library ieee--一位乘法器;6
use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity andarith is port(abin:in std_logic;din:in std_logic_vector(7 downto 0);dout:out std_logic_vector(7 downto 0));end;architecture one of andarith is begin process(abin,din)begin for i in 0 to 7 loop dout(i)<=din(i)and abin;end loop;end process;end;4.library ieee;--乘法運(yùn)算控制器 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity arictl is port(clk,start:in std_logic;clkout,rstall,ariend:out std_logic);end;architecture one of arictl is signal cnt4b:std_logic_vector(3 downto 0);begin rstall<=start;process(clk,start)begin
if start='1' then cnt4b<=“0000”;elsif clk'event and clk='1' then if cnt4b<8 then--小于8則計(jì)數(shù),等于8則表明乘法運(yùn)算已經(jīng)結(jié)束
cnt4b<=cnt4b+1;end if;end if;end process;process(clk,cnt4b,start)begin if start='0' then if cnt4b<8 then clkout<=clk;ariend<='0';else clkout<='0';ariend<='1';end if;else clkout<=clk;ariend<='0';end if;end process;end;5.library ieee;--16位鎖存器 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity reg16b is port(clk,clr:in std_logic;d:in std_logic_vector(8 downto 0);q:out std_logic_vector(15 downto 0));end;architecture one of reg16b is signal r16s:std_logic_vector(15 downto 0);
begin process(clk,clr)begin if clr='1' then r16s<=“***0”;elsif clk'event and clk='1' then r16s(6 downto 0)<=r16s(7 downto 1);r16s(15 downto 7)<=d;end if;end process;q<=r16s;end;6.library ieee;--8位右移寄存器 use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity sreg8b is port(clk,load:in std_logic;din:in std_logic_vector(7 downto 0);qb:out std_logic);end;architecture one of sreg8b is signal reg8:std_logic_vector(7 downto 0);begin process(clk,load)begin if clk'event and clk='1' then if load='1' then reg8<=din;else reg8(6 downto 0)<=reg8(7 downto 1);end if;end if;
end process;qb<=reg8(0);end;7.library ieee;--8位乘法器頂層設(shè)計(jì) use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity mult8x8 is port(clk:in std_logic;start:in std_logic;a,b:in std_logic_vector(7 downto 0);dout:out std_logic_vector(15 downto 0);ariend:out std_logic);end;architecture struc of mult8x8 is component adder8b is port(cin:in std_logic;a,b:in std_logic_vector(7 downto 0);s:out std_logic_vector(7 downto 0);cout:out std_logic);end component;component andarith is port(abin:in std_logic;din:in std_logic_vector(7 downto 0);dout:out std_logic_vector(7 downto 0));end component;component arictl is port(clk,start:in std_logic;clkout,rstall,ariend:out std_logic);end component;
component reg16b is port(clk,clr:in std_logic;d:in std_logic_vector(8 downto 0);q:out std_logic_vector(15 downto 0));end component;component sreg8b is port(clk,load:in std_logic;din:in std_logic_vector(7 downto 0);qb:out std_logic);end component;signal gndint :std_logic;signal intclk :std_logic;signal rstall :std_logic;signal qb :std_logic;signal andsd :std_logic_vector(7 downto 0);signal dtbin :std_logic_vector(8 downto 0);signal dtbout :std_logic_vector(15 downto 0);begin dout<=dtbout;gndint<='0';u1:arictl port map(clk,start,intclk,rstall,ariend);u2:sreg8b port map(intclk,rstall,b,qb);u3:andarith port map(qb,a,andsd);u4:adder8b port map(gndint,dtbout(15 downto 8),andsd,dtbin(7 downto 0),dtbin(8));u5:reg16b port map(intclk,rstall,dtbin,dtbout);end;3.5八位乘法器仿真圖形 輸入波形圖
輸出波形圖
時(shí)序RTL電路
心得體會(huì)
@@@@@這個(gè)自己編去吧。。
參考文獻(xiàn)
⑴ 王愛(ài)英.計(jì)算機(jī)組成與結(jié)構(gòu).北京:清華大學(xué)出版社,2001.2 ⑵ 黃仁欣.EDA技術(shù)實(shí)用教程.北京:清華大學(xué)出版社,2006 ⑶ 曹昕燕,周鳳臣,聶春燕.EDA技術(shù)實(shí)驗(yàn)與課程設(shè)計(jì).北京:清華大學(xué)出版社,2006.5 ⑷ 楊亦華,延明.數(shù)字電路EDA入門(mén).北京:北京郵電大學(xué)出版社,2003 ⑸ 鄒彥,莊嚴(yán),鄒寧,王宇鴻《EDA技術(shù)與數(shù)字系統(tǒng)設(shè)計(jì)>北京:電子工業(yè)出版社,2008 ⑹ 潘松 ,黃繼業(yè)《EDA技術(shù)與VHDL》,北京,清華大學(xué)出版社,2006(7)潘松 ,黃繼業(yè)《EDA技術(shù)實(shí)用教程》,北京,科學(xué)出版社,2006
第四篇:?jiǎn)纹瑱C(jī)數(shù)碼管顯示課程設(shè)計(jì)
單片機(jī)數(shù)碼管顯示課程設(shè)計(jì)
目錄引言...............設(shè)計(jì)任務(wù)和要求.............1
2.1 設(shè)計(jì)目的............1
2.2 設(shè)計(jì)意義............1總原理圖及主要模塊的流程圖......1
3.1 總原理圖及元器件清單..............1
3.2 主要流程圖..........1性能測(cè)試與分析.............35 結(jié)論與心得..........4致謝...........4
參考文獻(xiàn).............4
單片機(jī)數(shù)碼管顯示課程設(shè)計(jì)引言
從上世紀(jì)70年代第一批單片機(jī)問(wèn)世,短短二三十年時(shí)間,單片機(jī)技術(shù)已經(jīng)成為計(jì)算機(jī)技術(shù)的一個(gè)重要分支,廣泛運(yùn)用到工業(yè)控制、儀器、儀表、消費(fèi)產(chǎn)品,汽車(chē)、辦公自動(dòng)化和通信等領(lǐng)域。因此,單片機(jī)技術(shù)已經(jīng)成為電子、測(cè)控、自動(dòng)化、通信等許多工科專(zhuān)業(yè)學(xué)生的必備技能。
我用AT89C51芯片來(lái)設(shè)計(jì)一個(gè)簡(jiǎn)單的數(shù)碼管顯示。此設(shè)計(jì)給出了源代碼,通過(guò)仿真測(cè)試,其性能指標(biāo)達(dá)到了設(shè)計(jì)要求。
關(guān)鍵詞:?jiǎn)纹瑱C(jī),AT89C51,數(shù)碼管設(shè)計(jì)任務(wù)和要求
2.1 設(shè)計(jì)目的1.學(xué)習(xí)基本理論在實(shí)踐中綜合運(yùn)用的初步經(jīng)驗(yàn),掌握模擬電路設(shè)計(jì)的基本方法、設(shè)計(jì)步驟,培養(yǎng)綜合設(shè)計(jì)與調(diào)試能力。
2.了解AT89C51這個(gè)芯片的使用和性能指標(biāo)測(cè)試方法。
3.培養(yǎng)實(shí)踐技能,提高分析和解決實(shí)際問(wèn)題的能力。
2.2 設(shè)計(jì)意義
為了更好地熟悉和掌握單片機(jī)的基本功能和編程,掌握數(shù)碼管動(dòng)態(tài)掃描顯示原理及實(shí)現(xiàn)方法。自我動(dòng)態(tài)掃描顯示電路驅(qū)動(dòng)程序的編寫(xiě)方法。通過(guò)課程設(shè)計(jì),達(dá)到理論與實(shí)際應(yīng)用相結(jié)合,提高學(xué)生對(duì)微機(jī)硬件結(jié)構(gòu)的軟件設(shè)計(jì)方法的理解,使學(xué)生能夠根據(jù)實(shí)際應(yīng)用,初步實(shí)現(xiàn)硬件及軟件的設(shè)計(jì),對(duì)硬件開(kāi)發(fā)有更深層的認(rèn)識(shí),為今后打軟硬件開(kāi)發(fā),打下堅(jiān)實(shí)的基礎(chǔ)??傇韴D及及主要模塊的流程圖
3.1 總原理圖及元器件清單
(1)我用Proteus 7 professional來(lái)畫(huà)出我設(shè)計(jì)的總原理圖,如圖3-1。
如圖3-1
此電路圖就用到AT89C51這個(gè)芯片,和一個(gè)數(shù)碼管。
3.2 主要流程圖(四號(hào)宋體加粗)
1.主程序的流程圖
圖3.2-1主流程圖
2.子程序的流程圖
圖3.2-2子流程圖性能測(cè)試與分析
主程序和子程序都存放在AT89C51單片機(jī)中。主程序的功能是:顯示數(shù)字。子程序的功能有:延時(shí)。程序代碼:
ORG 0000H;初始化
LJMP START;轉(zhuǎn)入主程序
ORG 0010H;初始化
START:
CLR P2.7;P2.7←00H
MOVR0,#00H;R0←00H
MOV R2,#10;R2←10
MAIN:
MOV DPTR,#TAB;DPTR←TAB
MOV A,R0;A←(RO)
MOVC A,@A+DPTR;A←((A)+(DPTR))
MOV P0,A;P0←(A)
LCALL DELAY;調(diào)用延時(shí)程序
INC R0;RO←(R0)+1
DJNZR2,MAIN;判斷
JMP START;循環(huán)
DELAY:;延時(shí)程序
MOV R3,#11
D1: MOV R4,#100
D2: MOV R5,#100
DJNZ R5,$
DJNZ R4,D2
DJNZ R3,D1
RET
TAB:
DB 00101000B;0
DB 11101011B;1
DB 00110010B;2
DB 10100010B;3
DB 11100001B;4
DB 10100100B;5
DB 00100100B;6
DB 11101010B;7
DB 00100000B;8
DB 10100000B;9
END
我用Proteus 7 professional 軟件來(lái)測(cè)試我設(shè)計(jì)的電路圖。當(dāng)運(yùn)行時(shí),數(shù)碼管顯示0。如圖4-1。
圖4-1
當(dāng)221ms后,數(shù)碼管顯示1。如圖
4-2.圖4-2
我的程序是一個(gè)循環(huán)的,一直到顯示9,之后又重新開(kāi)始顯示0。在此不一一列出來(lái)。
為了能在實(shí)際在到應(yīng)用,我用開(kāi)發(fā)板來(lái)驗(yàn)證我所設(shè)計(jì)的電路圖。其結(jié)果如下:
圖4-3顯示1
圖4-4顯示8
從仿真的結(jié)果可以看出,我的設(shè)計(jì)是滿足我設(shè)計(jì)的要求的。結(jié)論與心得
通過(guò)單片機(jī)課程設(shè)計(jì),我不僅加深了對(duì)單片機(jī)理論的理解,將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我們的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。創(chuàng)新,是要我們學(xué)會(huì)將理論很好地聯(lián)系實(shí)際,并不斷地去開(kāi)動(dòng)自己的大腦,從為人類(lèi)造福的意愿出發(fā),做自己力所能及的,別人卻沒(méi)想到的事。使之不斷地戰(zhàn)勝別人,超越前人。同時(shí),更重要的是,我在這一設(shè)計(jì)過(guò)程中,學(xué)會(huì)了堅(jiān)持不懈,不輕易言棄。設(shè)計(jì)過(guò)程,也好比是我們?nèi)祟?lèi)成長(zhǎng)的歷程,常有一些不如意,也許這就是在對(duì)我們提出了挑戰(zhàn),勇敢過(guò),也戰(zhàn)勝了,勝利的鐘聲也就一定會(huì)為我們而敲響。
這個(gè)設(shè)計(jì)過(guò)程中,我遇到過(guò)許多次失敗的考驗(yàn),就比如,我在軟件上仿真軟件上能實(shí)現(xiàn)其功能,但是把它寫(xiě)進(jìn)開(kāi)發(fā)板就無(wú)法運(yùn)行,我不停地找原因。最后我找到了答案,這樣我明白,做設(shè)計(jì)不但是軟件可以運(yùn)行,用在硬件上一樣是那么重要的。我做的這個(gè)設(shè)計(jì)主要是用AT89C51這個(gè)芯片來(lái)實(shí)現(xiàn),這個(gè)芯片具有很多優(yōu)點(diǎn),程序簡(jiǎn)單易讀,結(jié)構(gòu)清楚,最重要的是成本低。很適合我們學(xué)生用來(lái)學(xué)生。在做這個(gè)設(shè)計(jì)的過(guò)程中,我也了解到了自己的不足,在日后的學(xué)習(xí)中,我還需加倍努力學(xué)習(xí)。
參考文獻(xiàn))
[1]梁炳東.單片機(jī)原理與應(yīng)用。北京:人民郵電出版社,2009
[2]
[3]http://wenku.baidu.com/album/view/702db2c7aa00b52acfc7cae7
致謝(小三號(hào) 宋體 加粗)
在此次課程設(shè)計(jì)中,我遇到不懂的問(wèn)題,老師和同學(xué)都幫我,讓我把問(wèn)題順利地得到解決,最后完成此次課程設(shè)計(jì)報(bào)告。從中我學(xué)到了很多東西,在此,謝謝我的老師和同學(xué),感謝你們?cè)谖矣龅诫y題的時(shí)候幫我解答。
第五篇:數(shù)電課程設(shè)計(jì)計(jì)數(shù)式頻率計(jì)
計(jì)數(shù)式數(shù)字頻率計(jì)
1、control模塊
功能仿真
時(shí)序仿真
Counter100模塊
功能仿真
時(shí)序仿真
Counter10模塊
功能仿真
時(shí)序仿真
Code1模塊
功能仿真
時(shí)序仿真
數(shù)字頻率計(jì)頂層邏輯圖
總模塊功能仿真
總模塊時(shí)序仿真