EDA实验报告

更新时间:2024-07-09 14:06:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

E D A

实 验 报 告

实验——

八位十六进制频率计

学院: 班级: 姓名: 学号:

一、实验目的:

1.熟悉Quartus II软件的使用;

2.掌握VHDL文本设计流程、组合电路的设计仿真和测试;

3.通过电路的仿真及验证,进一步了解八位十六进制频率计的功能;

二、实验内容:

根据VHDL文本设计流程,利用Quartus II完成八位十六进制频率计。

A.建立工作库文件夹和编辑设计文件

a.新建一个文件夹,命名为liulan,放在D盘中;

b.打开Quartus II,新建文件,选择 VHDL File选项,分四个模块——侧频控制电路、32位锁存器、32位计数器、频率计顶层文件分别输入源程序如下:

1. 侧频控制电路

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY FTCTRL IS

PORT( CLKK : IN STD_LOGIC; CNT_EN : OUT STD_LOGIC; RST_CNT : OUT STD_LOGIC; load : OUT STD_LOGIC); END FTCTRL;

ARCHITECTURE behav OF FTCTRL 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.32位锁存器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY REG32B IS

PORT( LK : IN STD_LOGIC;

DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END REG32B;

ARCHITECTURE behav OF REG32B IS BEGIN

PROCESS(LK,DIN) BEGIN

IF LK'EVENT AND LK = '1' THEN DOUT <= DIN; END IF;

END PROCESS; END behav;

3.32位计数器

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY COUNTER32B IS

PORT( FIN : IN STD_LOGIC; CLR : IN STD_LOGIC; ENABLE : IN STD_LOGIC;

DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COUNTER32B;

ARCHITECTURE behav OF COUNTER32B IS

SIGNAL CQI : STD_LOGIC_VECTOR(31 DOWNTO 0); BEGIN

PROCESS(FIN,CLR,ENABLE)

BEGIN

IF CLR = '1' THEN CQI <= (OTHERS => '0'); ELSIF FIN'EVENT AND FIN = '1' THEN

IF ENABLE = '1' THEN CQI <= CQI + 1;END IF; END IF; END PROCESS; DOUT <= CQI;

END behav;

4.频率计顶层文件

LIBRARY IEEE;

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL; ENTITY wf IS

PORT(CLK1HZ : IN STD_LOGIC; FSIN : IN STD_LOGIC;

DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END wf;

ARCHITECTURE struc OF wf IS COMPONENT FTCTRL

PORT( CLKK : IN STD_LOGIC; CNT_EN : OUT STD_LOGIC; RST_CNT : OUT STD_LOGIC; load : OUT STD_LOGIC); END COMPONENT;

COMPONENT COUNTER32B

PORT( FIN : IN STD_LOGIC; CLR : IN STD_LOGIC; ENABLE : IN STD_LOGIC;

DOUT : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)); END COMPONENT;

COMPONENT REG32B

PORT( LK : IN STD_LOGIC;

DIN : IN STD_LOGIC_VECTOR(31 DOWNTO 0); DOUT : OUT STD_LOGIC_VECTOR(31 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);

U3 : COUNTER32B PORT MAP(FIN => FSIN,CLR => CLR_CNT1, ENABLE => TSTEN1,DOUT =>DTO1); END struc;

c.选择File—save as,找到已设立的文件夹:D:\\liulan,将文件存盘至该文件夹(存盘文件名与实体名一致)。

B.创建工程:

a.选择File—New Project Wizard,找到文件夹D:\\liulan b.将设计文件分别加入工程。 c.完成工程的设定。

C.输出原理图:

利用RTL Viewer,查看原理框图是否正确。若无误,则可分别观察到如下图形: 1.

2.

3.

4.

D.时序仿真

a.选择File—New,选择 Vertor Waveform File 打开一个波形编辑器。 b.设置仿真时间区域:选择 Edit —End Time, 在弹出窗口中 Time 文本框中输入1000,单位选择微秒。

c.选择File—Save As将波形文件存入文件夹:D:\\liulan。

d.选择View —Utility Windows—Node Finder,在对话框中,Filter下拉表框中选

“Pins:all”,然后单击List,在下方的Nodes found窗口中出现设计中jsq工程所有端口引脚名,将各个端口拖到波形编辑窗口。 e.编辑输入波形:对端口分别设置一个时钟信号,同时在设置时钟时,将Duty cycle(空占比)设置为50。

f.启动仿真器:所有设置进行完毕后,选择Processing—Start Stimulation ,直到出现 Simulation was successful,仿真结束。 g.观察仿真波形,检验是否真确。正确结果如下图:

2HZ时的波形:

4HZ时的波形:

三:结果分析与心得:

这次实验比较复杂,需要查阅相关资料才能勉强完成。虽然过程稍微曲折了一点,但收获挺大的。也使得我对八位十六进制计数器有了大致认识。

本文来源:https://www.bwwdw.com/article/9h2.html

Top