写出了综合设计的第一个实验的详细步骤,主要是介绍用QuartusII 软件设计由多个模块构成的数字系统的主要步骤,及注意事项。希望对前几个实验未能完全掌握的同学有所帮助。
3.3.2实验内容
基于QuartusII 软件及VHDL 语言实现七人表决器。当参与表决的7人中有4个或4个以上赞同时,表决器输出“1”表示通过,否则输出“0”表示不通过,并显示赞成和反对的人数。用7个电平开关作为表决器的7个输入变量,数码管显示人数,LED灯显示是否通过。
本实验4学时。
3.3.3实验仪器
ZY11EDA13BE 型实验箱。
3.3.4实验原理
分析实验要求,七人表决器系统主要由两个模块构成:投票计数模块和数码管显示模块。投票计数模块,用来统计赞成和反对的人数,数码显示模块以数码管动态扫描的形式,将赞成和反对的人数显示在数码管上。
实验具体步骤如下:
一、建立项目
(1
)新建文件夹。路径及文件名中不可出现汉字。
(2)新建项目。项目取名为bjq7,特别强调的是项目名取好后,顶层文件名必须与项目名一致。一个数字系统可以由多个模块构成,使所有模块连接在一起的总文件叫做顶层
文件,只有顶层文件名可以且必须与项目名相同。
(3)选择芯片
二、建立文件
1. 建立投票计数模块。
(1)新建VHDL
文件
(2)编辑VHDL 程序。投票计数模块输入为七个电平开关input ,输出为同意的人数agree ,反对的人数disagree ,是否通过指示灯y ,程序清单如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity BJQ is
port (input:instd_logic_vector(6downto 0);
agree:outstd_logic_vector(3downto 0);
disagree:outstd_logic_vector(3downto 0);
y:outstd_logic);
end;
architecture one of BJQ is
begin
process(input)
variable cnt:integerrange 0to 7;
variable cnt0:integerrange 0to 7;
begin
cnt:=0;
for i in 6downto 0loop
if input(i)='1'then
cnt:=cnt+1;
end if;
end loop;
cnt0:=7-cnt;
if cnt>3then y
else y
end if;
case cnt is
when 0=>agree
when 1=>agree
when 2=>agree
when 3=>agree
when 4=>agree
when 5=>agree
when 6=>agree
when 7=>agree
when others=>agree
end case;
case cnt0is
when 0=>disagree
when 1=>disagree
when 2=>disagree
when 3=>disagree
when 4=>disagree
when 5=>disagree
when 6=>disagree
when 7=>disagree
when others=>disagree
end case;
end process;
end;
程序输入完成后进行保存,名字与实体名一致BJQ 。
(3)对表决器程序编译。点击Project Navigator 小窗口下方的Files ,可以看到项目中
已有的文件。
选中BJQ.vhd ,点击右键选择“set as top-level entity ”,此步骤将BJQ.vhd 设置为当前需要编译的文件。每次编译前都要进行此步骤,告诉EDA
软件,当前要编译哪个文件。
执行“Processing ”菜单下的“Start Compilation ”命令,开始编译。
(2)数码管显示模块建立
步骤与投票计数模块方法相同,新建VHDL 文件、输入程序、设置为顶层实体、编译。程序清单如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity XIANSHI is
port (led:outstd_logic_vector(0to 6);
agree:instd_logic_vector(3downto 0);
disagree:instd_logic_vector(3downto 0);
clk:instd_logic);
end;
architecture one of XIANSHI is
signal qn:std_logic_vector(3downto 0);
begin
process(clk,agree,disagree)
begin
case clk is
when '0'=>qn
when '1'=>qn
when others=>qn
end case;
case qn is
when "0000"=>led
when "0001"=>led
when "0010"=>led
when "0011"=>led
when "0100"=>led
when "0101"=>led
when "0110"=>led
when "0111"=>led
when others=>led
end case;
end process;
end;
(3)将VHDL 文件生成原理图可调用的器件
点击Project Navigator 小窗口下方的Files ,选中BJQ.vhd ,点击右键选择“Create Symbol Files for current File ”,将BJQ 的VHDL
文件生成为可调用的器件。
生成器件成功后显示“Create Symbol File was successful ”
同样方法对XIANSHI.vhd
进行操作。
(4)建立顶层文件
各个模块建立好后,需要建立顶层文件。本实验在原理图中将所有模块连接起来,实现数字系统的功能。因此,原理图为本项目的顶层文件,顶层文件名必须与项目名相同,并且只有顶层文件可以与项目名相同,保存为bjq7,与最开始建立项目时所取的项目名一致,
如下图。
在原理图文件中,双击画图区域,输入所生成的VHDL 器件的名字(即VHDL 程序的文件名)BJQ
,就可以调用上面步骤所生成的相应的器件,如下图。
在原理图文件中,连接各个功能模块,设置输入输出,如下图。需要特别注意的是,一位二进制数据连接是用细线,多位二进制数据用粗线
,多位二进制数输入或输出的命名方式为in[6..0],与模块内的数据格式一致,如下
图所示。
原理图编辑好后,需要对其进行编译。点击Project Navigator 小窗口下方的Files ,选中bjq.bdf
,将其设置为当前顶层实体,进行编译。
三、管脚分配
通过管脚分配使设计的数字系统控制实验箱。选择菜单栏中的Assignments 下的“Pins ”,进入管脚分配界面。
参照实验书18页。79为实验箱上第一排时钟,45、46、47、53、54、55、56控制实验箱上电平开关,10,11,12,13,14,15,16为实验箱数码管的七段译码数据输入端,管脚7为数码管片选端,控制将哪个数码管点亮,19为LED
灯显示是否通过。
管脚分配好后,回到主界面对顶层文件进行编译。
四、程序下载。
编译成功后,将所设计的数字系统下载到实验箱芯片上,方法与实验一的下载步骤相同。下载时,(1)打开实验箱侧面总开关,(2)打开实验箱右上角第一个黄色按钮开关APW1,
(3)关闭实验箱左下角按钮开关(关闭时钟源),(4)实验箱红色模式选择开关,6、7为下,其余拨到上端,点击下载。下载成功后,打开时钟开关。
写出了综合设计的第一个实验的详细步骤,主要是介绍用QuartusII 软件设计由多个模块构成的数字系统的主要步骤,及注意事项。希望对前几个实验未能完全掌握的同学有所帮助。
3.3.2实验内容
基于QuartusII 软件及VHDL 语言实现七人表决器。当参与表决的7人中有4个或4个以上赞同时,表决器输出“1”表示通过,否则输出“0”表示不通过,并显示赞成和反对的人数。用7个电平开关作为表决器的7个输入变量,数码管显示人数,LED灯显示是否通过。
本实验4学时。
3.3.3实验仪器
ZY11EDA13BE 型实验箱。
3.3.4实验原理
分析实验要求,七人表决器系统主要由两个模块构成:投票计数模块和数码管显示模块。投票计数模块,用来统计赞成和反对的人数,数码显示模块以数码管动态扫描的形式,将赞成和反对的人数显示在数码管上。
实验具体步骤如下:
一、建立项目
(1
)新建文件夹。路径及文件名中不可出现汉字。
(2)新建项目。项目取名为bjq7,特别强调的是项目名取好后,顶层文件名必须与项目名一致。一个数字系统可以由多个模块构成,使所有模块连接在一起的总文件叫做顶层
文件,只有顶层文件名可以且必须与项目名相同。
(3)选择芯片
二、建立文件
1. 建立投票计数模块。
(1)新建VHDL
文件
(2)编辑VHDL 程序。投票计数模块输入为七个电平开关input ,输出为同意的人数agree ,反对的人数disagree ,是否通过指示灯y ,程序清单如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity BJQ is
port (input:instd_logic_vector(6downto 0);
agree:outstd_logic_vector(3downto 0);
disagree:outstd_logic_vector(3downto 0);
y:outstd_logic);
end;
architecture one of BJQ is
begin
process(input)
variable cnt:integerrange 0to 7;
variable cnt0:integerrange 0to 7;
begin
cnt:=0;
for i in 6downto 0loop
if input(i)='1'then
cnt:=cnt+1;
end if;
end loop;
cnt0:=7-cnt;
if cnt>3then y
else y
end if;
case cnt is
when 0=>agree
when 1=>agree
when 2=>agree
when 3=>agree
when 4=>agree
when 5=>agree
when 6=>agree
when 7=>agree
when others=>agree
end case;
case cnt0is
when 0=>disagree
when 1=>disagree
when 2=>disagree
when 3=>disagree
when 4=>disagree
when 5=>disagree
when 6=>disagree
when 7=>disagree
when others=>disagree
end case;
end process;
end;
程序输入完成后进行保存,名字与实体名一致BJQ 。
(3)对表决器程序编译。点击Project Navigator 小窗口下方的Files ,可以看到项目中
已有的文件。
选中BJQ.vhd ,点击右键选择“set as top-level entity ”,此步骤将BJQ.vhd 设置为当前需要编译的文件。每次编译前都要进行此步骤,告诉EDA
软件,当前要编译哪个文件。
执行“Processing ”菜单下的“Start Compilation ”命令,开始编译。
(2)数码管显示模块建立
步骤与投票计数模块方法相同,新建VHDL 文件、输入程序、设置为顶层实体、编译。程序清单如下:
library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
entity XIANSHI is
port (led:outstd_logic_vector(0to 6);
agree:instd_logic_vector(3downto 0);
disagree:instd_logic_vector(3downto 0);
clk:instd_logic);
end;
architecture one of XIANSHI is
signal qn:std_logic_vector(3downto 0);
begin
process(clk,agree,disagree)
begin
case clk is
when '0'=>qn
when '1'=>qn
when others=>qn
end case;
case qn is
when "0000"=>led
when "0001"=>led
when "0010"=>led
when "0011"=>led
when "0100"=>led
when "0101"=>led
when "0110"=>led
when "0111"=>led
when others=>led
end case;
end process;
end;
(3)将VHDL 文件生成原理图可调用的器件
点击Project Navigator 小窗口下方的Files ,选中BJQ.vhd ,点击右键选择“Create Symbol Files for current File ”,将BJQ 的VHDL
文件生成为可调用的器件。
生成器件成功后显示“Create Symbol File was successful ”
同样方法对XIANSHI.vhd
进行操作。
(4)建立顶层文件
各个模块建立好后,需要建立顶层文件。本实验在原理图中将所有模块连接起来,实现数字系统的功能。因此,原理图为本项目的顶层文件,顶层文件名必须与项目名相同,并且只有顶层文件可以与项目名相同,保存为bjq7,与最开始建立项目时所取的项目名一致,
如下图。
在原理图文件中,双击画图区域,输入所生成的VHDL 器件的名字(即VHDL 程序的文件名)BJQ
,就可以调用上面步骤所生成的相应的器件,如下图。
在原理图文件中,连接各个功能模块,设置输入输出,如下图。需要特别注意的是,一位二进制数据连接是用细线,多位二进制数据用粗线
,多位二进制数输入或输出的命名方式为in[6..0],与模块内的数据格式一致,如下
图所示。
原理图编辑好后,需要对其进行编译。点击Project Navigator 小窗口下方的Files ,选中bjq.bdf
,将其设置为当前顶层实体,进行编译。
三、管脚分配
通过管脚分配使设计的数字系统控制实验箱。选择菜单栏中的Assignments 下的“Pins ”,进入管脚分配界面。
参照实验书18页。79为实验箱上第一排时钟,45、46、47、53、54、55、56控制实验箱上电平开关,10,11,12,13,14,15,16为实验箱数码管的七段译码数据输入端,管脚7为数码管片选端,控制将哪个数码管点亮,19为LED
灯显示是否通过。
管脚分配好后,回到主界面对顶层文件进行编译。
四、程序下载。
编译成功后,将所设计的数字系统下载到实验箱芯片上,方法与实验一的下载步骤相同。下载时,(1)打开实验箱侧面总开关,(2)打开实验箱右上角第一个黄色按钮开关APW1,
(3)关闭实验箱左下角按钮开关(关闭时钟源),(4)实验箱红色模式选择开关,6、7为下,其余拨到上端,点击下载。下载成功后,打开时钟开关。