VHDL实验报告一2选1多路选择器
- 格式:doc
- 大小:78.00 KB
- 文档页数:5
实验二组合逻辑电路设计一、实验目的1、了解和逐步掌握一般组合逻辑电路的设计方法;2、熟练掌握QuartusⅡ软件原理图输入方式的操作步骤;3、熟练掌握QuartusⅡ软件中底层和顶层电路模块的设计方法;4、熟练掌握Quartus Ⅱ软件常见操作的设置方法。
二、实验设备计算机、QuartusⅡ软件、实验箱三、实验内容1、在QuartusⅡ软件中采用VHDL语言完成一个2选1多路选择器底层电路的设计;2、将已设计完成的2选1数据选择器作为底层模块,通过原理图输入方式和元件例化语句两种方式完成顶层3选1数据选择器顶层电路的设计和测试。
四、实验步骤注意:以下为大体步骤,详细步骤根据具体实验过程独立完成。
1、设计2选1数据选择器底层模块用VHDL语言完成该电路模块的设计并在QuartusⅡ软件中进行仿真,截取仿真波形作为部分实验结果。
2、设计3选1数据选择器顶层模块将2选1数据选择器作为底层元件,利用原理图输入方式和元件例化语句两种方式完成3选1数据选择器顶层模块的设计并仿真;注意:底层和顶层文件应放在同一工程文件夹中,截取3选1数据选择器仿真波形和顶层图作为部分实验结果。
3、完成3选1数据选择器的引脚锁定(1)三个输入端可自由锁定在三个按键上,根据实验箱上空余的引脚自由锁定;(2)两个选择端可自由锁定在两个拨码开关上;(3)输出端可自由锁定在一个LED 灯上,通过灯的亮灭判断是否有输出。
为了清楚区分三个输入端,测试时可设置三个不同的LED 灯来判断。
图-1 开关量输入输出模块S1—s8是带自锁的单刀单执拨码开关,在开关未拨动时是低电平,拨动时J1为高电平并保持高电平不变,只有回拨开关时J1才恢复低电平输入。
图-2 按键模块此模块共有8个按键,BUTTON1—BUTTON8是轻触按键;在按键未按下时JP6为高电平输入,按键按下后JP6对FPGA 输入低电平,松开按键后恢复高电平输入。
图-3 LED 灯指示模块该模块有8个LED 指示灯,在使用时候只需要用排线连接JP5和FPGA 连接,FPGA 输出低电平时指示灯亮。
EDA实验二4选1多路选择器设计实验一、实验目的进一步熟悉QuartusII 的VHDL 文本设计流程、组合电路的设计仿真和测试。
二、实验内容实验内容一:根据 4.1流程,利用QuartusII 完成四选一多路选择器的文本编辑输入和仿真测试等步骤,给出仿真波形。
实验内容二:对VHDL 不同描述方式的四选一多路选择器进行硬件实验,比较他们的特性。
三、实验记录1.when-else语句设计的4选1多路选择器a).利用when-else语句的vhdl程序library ieee;use ieee.std_logic_1164.all;entity mux41a isport(a,b,c,d,s0,s1:in std_logic;y:out std_logic);end entity mux41a;architecture one of mux41a isbeginy<= a when s0='0' and s1='0' elseb when s0='1' and s1='0' elsec when s0='0' and s1='1' elsed;end architecture one;备注以上是when-else语句设计的4选1多路选择器的vhdl描述。
程序中应该注意的有以下几点A.一:实体的命名要和工程名相同,并且不能是中文的或者以数字开头;B.二:when-else语句具有最高赋值优先级;b).when-else语句设计的4选1多路选择器的RTL图图(1)when-else语句设计的4选1多路选择器的RTL图c).when-else语句设计的4选1多路选择器的时序仿真波形图图(2)when-else语句设计的4选1多路选择器的时序仿真波形图d).when-else语句设计的4选1多路选择器功能仿真波形图图(3)when-else语句设计的4选1多路选择器功能仿真波形图2.if-then语句设计的4选1多路选择器a).利用when-else语句的vhdl程序library ieee;use ieee.std_logic_1164.all;entity mux41b isport(a,b,c,d,s0,s1:in std_logic;y:out std_logic);end entity mux41b;architecture one of mux41b isbeginprocess (a,b,c,d,s0,s1) beginif s0='0' and s1='0' then y<= a;end if;if s0='1' and s1='0' then y<= b;end if;if s0='0' and s1='1' then y<= c;end if;if s0='1' and s1='1' then y<= d;end if;end process;end architecture one;备注:以上是if—then语句设计的4选1多路选择器的vhdl描述。
E D A实验报告实验一、QuartusⅡ软件使用一、试验目的学习QUARTUS II软件的使用,掌握软件工程的建立、VHDL源文件的设计和波形仿真等基本内容;二、试验内容利用QuartusⅡ完成2选1多路选择器的文本编辑输入(mux21a.vhd)和仿真测试等步骤,给出仿真波形。
设计含有异步清零和计数使能的4位二进制加减可控计数器。
三、设计过程VHDL设计程序如下二选一:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ;ENTITY mux21 ISPORT ( a, b : IN BIT;s : IN BIT;y : OUT BIT );END ENTITY mux21;-- behave descriptionARCHITECTURE one OF mux21 ISBEGINy <= a WHEN s = '0' ELSE b ;END ARCHITECTURE one ;四位二进制计数器:LIBRARY IEEE ;USE IEEE.STD_LOGIC_1164.ALL ;USE IEEE.STD_LOGIC_UNSIGNED.ALL ; -- 运算符重载ENTITY mycounter ISPORT ( ena,clr,d_ctr,clk : IN STD_LOGIC ;q : OUT STD_LOGIC_VECTOR(3 DOWNTO 0 )) ;END ENTITY mycounter;ARCHITECTURE bhv OF mycounter ISSIGNAL q1 : STD_LOGIC_VECTOR(3 DOWNTO 0 );BEGINq <= q1 ;PROCESS (clk,clr,ena,d_ctr)BEGINIF clr='1' THEN q1<="0000";ELSIF clk'EVENT AND clk = '1' THENIF ena='1' THENIF d_ctr='1' THENq1 <= q1 + '1';ELSEq1<=q1-'1';END IF;ELSEq1<=q1;END IF;END IF;END PROCESS ;END ARCHITECTURE bhv;四、仿真波形与分析二选一:四位二进制计数器:实验二、原理图输入设计方法一、试验目的熟悉利用QUARTUS II中的原理图输入法设计组合电路,掌握层次化设计的方法,并通过一个4位全减器的设计把握文本和原理图输入方式设计的详细流程。
实验一秒表计数器的设计实验目的:本实验通过设计四种频率可选的数字时钟系统, 以达到熟悉VHDL 语言编程语法、设计思路和熟练掌握Quartus II 开发软件的目的。
二、实验内容:该数字时钟的显示格式如下所示: HH: MM: SS, 其中HH表示时计数的两位, MM表示分计数的两位, SS表示秒计数的两位。
本系统输入信号分别为复位信号rst(高有效)、sel(两位信号, 分别可以选择2分频、4分频8分频和16分频)、clk_in(时钟信号)、8位时输出、8位分输出、8位秒输出(其中高4为表示对应的高半字节、低4位表示的低半字节, 譬如当时间为08:59:30时, 时输出为”0000_1000”,分输出为”0101_1001”,秒输出为”0011_0000”)。
该时钟系统可以通过Sel信号时钟运行的快慢。
三、实验流程:通过对实验内容的分析: 可以考虑时钟系统的可由三部分组成: 1.分频器:分频器为时序电路并且通过《数字电路》理论课程的学习可知由计数器来实现, 同学可以回想一下实验1中是如何实现计数器电路的设计), 该模块主要产生2.4.8、16分频的时钟信号;2.多路选择器:在VHDL中多路选择器为组合逻辑, 可以有多种实现方法, 在这里主要选用了case语句来实现。
该模块的作用是从分频器中根据Sel信号选择适当的时钟信号;3.时钟控制器:该模块比较复杂, 主要实现功能是实现一个24小时的计时。
当时间为00:00:59的时候下一个时钟到来时状态的跳变为00:01:00, 计时中多数计数为加1操作, 有几个特殊状态需要重点考虑:当时间产生分进数时, 譬如上例。
当时间产生时进数时, 譬如00:01:59时刻的下一个状态为00:02:00;当时间产生时进数时, 譬如00:59:59是个的下一个状态为01:00:00。
当时间产生天进数时, 譬如23:59:59的下一个状态为00:00:00。
四、仿真要求:1、本次试验的结果全部采用功能仿真分析:在结果图中能够看到让复位信号rst为有效的情况下, 所有的输出为00:00:00;2.当频率选择输出分别为”00”、”01”、”10”、”11”时秒为的进数分别包含2.4.8、16倍clk_in的时钟周期;3.可以看到完整的计时周期00:00:00->23:59:59->00:00:00。
3-1. 2选1多路选择器实验
示例程序和实验指导课件位置:\EDA_BOOK3_FOR_C35\chpt4\EXPT51_mux21A\工程mux21A 1、实验目的:熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2、实验内容:
(1)首先利用QuartusⅡ完成2选1多路选择器(例3-1)的文本编辑输入(mux21a.vhd),建立工程并保存。
(2)编译仿真。
编译该工程,成功后进行波形仿真,仿真时序图如图3-2所示:
【例3-1】
ENTITY mux21a IS
PORT ( a, b, s: IN BIT;
y : OUT BIT );
END ENTITY mux21a;
ARCHITECTURE one OF mux21a IS
BEGIN
PROCESS (a,b,s)
BEGIN
IF s = '0' THEN y <= a ; ELSE y <= b ;
END IF;
END PROCESS;
END ARCHITECTURE one ;
图3-1 双2选1多路选择器
图 3-2 mux21a功能时序波形
(3)引脚锁定以及硬件下载测试。
引脚锁定如图3-3所示。
建议选实验电路模式5,clock0接256HZ,clock5接1024HZ,按键1控制多路选择器对不同时钟的选择,从而从扬声器中能听到不同音调的声音。
图3-3引脚锁定
3、实验报告:根据以上的实验内容写出实验报告,包括程序设计、软件编译、仿真分析、硬件测试和详细实验过程;给出程序分析报告、仿真波形图及其分析报告。
实验一组合逻辑电路的设计班级:11电信1班姓名:张斌学号:3111003113一、实验目的:1.熟悉QuartusⅡ的VHDL文本设计流程全过程,学习简单组合电路的设计、多层次电路设计、仿真和硬件测试。
2.加深FPGA\CPLD设计的过程,并比较原理图输入和文本输入的优劣。
二、实验的硬件要求:1.GW48EDA/SOPC+PK2实验系统。
三、实验内容及预习要求:1.首先利用QuartusⅡ完成2选1多路选择器(如图S1-1)的文本编辑输入(mux21a.vhd)和仿真测试等步骤。
最后在实验系统上进行硬件测试,验证本项设计的功能。
图S1-12.将此多路选择器看成是一个元件mux21a,利用原理图输出法完成图s1-2,并将此文件放在同一目录中。
图s1-2编译、综合、仿真本例程,并对其仿真波形作出分析说明。
最后在实验系统上进行硬件测试,验证本项设计的功能。
3.以1位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,编译、综合、仿真本例程,并对其仿真波形作出分析说明。
最后在实验系统上进行硬件测试,验证本项设计的功能。
4.七段数码管译码器(Decoder)七段数码管译码器(Decoder)的输入为4位二进制代码,输出为7个表征七段数码管代码的状态信号。
下面为一个七段数码管译码器的VHDL源代码模型:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY display ISPORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0);LED7S:OUT STD_LOGIC_VECTOR(6 DOWNTO 0));END;ARCHITECTURE ONE OF display ISBEGINPROCESS(A)BEGINCASE A ISWHEN "0000"=>LED7S<="0111111";--X"3F"->0WHEN "0001"=>LED7S<="0000110";--X"06"->1WHEN "0010"=>LED7S<="1011011";--X"5B"->2WHEN "0011"=>LED7S<="1001111";--X"4F"->3WHEN "0100"=>LED7S<="1100110";--X"66"->4WHEN "0101"=>LED7S<="1101101";--X"6D"->5WHEN "0110"=>LED7S<="1111101";--X"7D"->6WHEN "0111"=>LED7S<="0000111";--X"07"->7WHEN "1000"=>LED7S<="1111111";--X"7F"->8WHEN "1001"=>LED7S<="1101111";--X"6F"->9WHEN "1010"=>LED7S<="1110111";--X"77"->10WHEN "1011"=>LED7S<="1111100";--X"7C"->11WHEN "1100"=>LED7S<="0111001";--X"39"->12WHEN "1101"=>LED7S<="1011110";--X"5E"->13WHEN "1110"=>LED7S<="1111001";--X"79"->14WHEN "1111"=>LED7S<="1110001";--X"71"->15WHEN OTHERS=>NULL;END CASE;END PROCESS;END;编译、综合、仿真本例程,并对其仿真波形作出分析说明。
学号:201400800093 姓名:胡玲专业:电子信息科学与技术科目:电子设计自动化EDA 实验名称:8位二选一多路选择器
一.实验要求
实验要求:1通过有限状态机的VHDL设计初步了解VHDL表达和设计电路的方法2根据学过的一位二选一选择器改进VHDL语言而掌握8位二选一多路选择器
三.RTL图
四.波形仿真图:
由源代码可知a_fin=a_dis,b_fin=b_dis,但由波形仿真图可知在同一时刻它们并不一定相等,而是存在延迟,结果s_fin也是和对应的输入值存在延迟,如果不考虑延迟,结果正确。
例:t=40ns时输入是1010+0001结果是1011,无进位。
五:实验结果
1.用开关sw17-14表示输入的四位二进制A(17-14分别表示A0-A3),并用LEDR17-14显示。
sw13-10表示输入四位二进制B(13-10分别表示B3-B0)并用LEDR13-10显示。
KEY0用于复位KEY1用于做时钟信号LEDR3-0表示输出的四位二进制数LEDG8(绿灯)显示进位输出。
2.按下复位键—用开关确定输入值(例如输入为1111+1000)—按下时钟信号键—可显示红灯为0111以及绿灯亮有进位。
3.可知结果正确。
六.实验体会及心得
1.做实验前先预习实验内容,学以致用和大胆改进很重要。
2.代码写错没关系,几十个错误也没关系,不能复制粘贴那样学不到东西,与同学探讨很有意义,最后结果出来再回过头研究代码会觉得更了解每一步代码。
3.实验过程中切记避免心浮气躁,急于出结果,如果实在没思路可以看同学代码但一定要看懂在之上进行改变看结果。
实验一
实验目的:
熟悉quartus的vhdl文本设计流程全过程,学习简单的组合电路的设计,多层次的电路设计,仿真和硬件测试
二、实验内容
内容(一)用vhdl语言设计2选1多路选择器
参考例3-1程序设计如下:
library ieee;
use ieee.std_logic_1164.all;
entity mux21a is
port (a,b,s:in bit;
y: out bit);
end entity mux21a;
architecture one of mux21a is
begin
y<=a when s='0' else b;
end architecture one
全程编译后软件提示0错误,3警告,可以继续下面仿真操作。
程序分析:
这是一个2选1多路选择器,a和b分别为两个数字输入端的端口名,s为通道选择控制信号输入端的端口名,y为输出端的端口名。
时序仿真及分析:
时序仿真输入图:
时序仿真输出图:
时序分析:
由上面两图可以得知:当s=0时,y口输出a,当s=1时,y口输出b
下载和硬件测试:
引脚锁定图:
程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz信号,clock2接8Hz信号。
通过键一控制s,当键一进行切换时,明显能听到扬声器发出两种不同音调的声音。
实验内容(二)双二选一多路选择器设计
程序设计:
library ieee;
use ieee.std_logic_1164.all;
entity mux21a is
port (a,b,s:in bit;
y: out bit);
end entity mux21a;
architecture one of mux21a is
begin
y<=a when s='0' else b;
end architecture one;
entity muxk is
port (a1,a2,a3,s0,s1:in bit;
outy:out bit);
end entity muxk;
architecture bhv of muxk is
component mux21a
port (a,b,s:in bit;
y:out bit);
end component;
signal tmp: bit;
begin
u1:mux21a port map(a=>a2,b=>a3,s=>s0,y=>tmp);
u2:mux21a port map(a=>a1,b=>tmp,s=>s1,y=>outy);
end architecture bhv;
全程编译后软件提示0错误,2警告
程序分析:
这是一个双2选1多路选择器,a1、a2和a3分别为两个数字输入端的端口名,s0、s1为通道选择控制信号输入端的端口名,outy为输出端的端口名。
实体mux21a是一个2选一选通电路,实体muxk是元件的例化,其作用是将两个mux21a组合成一个3选1多路选择器。
时序仿真及分析:
时序仿真输入图
时序仿真输出图
时序分析:
从仿真出来的结果,我们不难发现,s0和s1做为a1、a2、a3的选通控制信号。
当s0=0.、s1=0时,outy输出a1;当s0=0.、s1=1时,outy输出a2;当s0=1.、s1=0时,outy输出a1;当s1=1.、s2=1时,outy输出a3;
下载和硬件测试:
引脚锁定图
程序下载完成后,选择实验电路模式5,通过短路帽选择clock0接256Hz信号,clock2接8Hz信号,clock5接1024Hz。
通过键一、键二分别控制s1、s2,当键一、键二进行切换时,明显能听到扬声器发出三种不同音调率的声音。
实验结果:
在实验一中内容一和内容二编译,仿真都没问题,除了有两三个警告以外,并无其他错误,但是在下载过程中,由于设置编程器处出现一点问题,导致下载失败,经过请教,调整后成功运行
四、实验过程所出现的问题及其解决
首先,仿真结果出现延时,应该将a,b,s的周期增大些,且要保证单位为us,刚开始做实验内容(一)时,文件夹名字与程序中所用的实体名不一致,导致程序运行时无法找到文件夹,无法正常工作,经更改后,正常运行,同时文件夹名字不用汉字和数字,以免出错。
每次修改过程都应该注意保存,才能将修改的结果反映到所输出的波形中,刚开始常常忘记,经过多次操作后才能够熟练运用。
HDL程序设计
—组合逻辑电路设计
班级:08级通信工程二班
学号:
姓名:。