(EDA实验报告)201400121184

(EDA实验报告)201400121184
(EDA实验报告)201400121184

山东大学信息科学与工程学院

EDA实验报告

姓名:吴蔓

学号:201400121184

班级:电信工一班

2016.5.31

实验14选1数据选择器的设计

一、实验目的

1.学习EDA软件的基本操作。

2.学习使用原理图进行设计输入。

3.初步掌握器件设计输入、编译、仿真和编程的过程。

4.学习实验开发系统的使用方法。

二、实验仪器与器材

1.EDA开发软件一套

2.微机一台

3.实验开发系统一台

4.打印机一台

三、实验说明

本实验通过使用基本门电路完成4选1数据选择器的设计,初步掌握EDA设计方法中的设计输入、编译、综合、仿真和编程的过程。实验结果可通过实验开发系统验证,在实验开发系统上选择高、低电平开关作为输入,选择发光二极管显示输出电平值。

本实验使用Quartus II 软件作为设计工具,要求熟悉Quartus II 软件的使用环境和基本操作,如设计输入、编译和适配的过程等。

实验中的设计文件要求用原理图方法输入,实验时,注意原理图编辑器的使用方法。例如,元件、连线、网络名的放置方法和放大、缩小、存盘、退出等命令的使用。学会管脚锁定以及编程下载的方法等。

四、实验要求

1.完成4选1数据选择器的原理图输入并进行编译;

2.对设计的电路进行仿真验证;

3.编程下载并在实验开发系统上验证设计结果。

实验程序:

library ieee;

use ieee.std_logic_1164.all;

entity mux4 is

port (input:in std_logic_vector(3 downto 0);

sel:in std_logic_vector(1 downto 0);

y: out std_logic);

end mux4;

architecture rtl of mux4 is

begin

process(sel,input)

begin

if sel=“00”then

y<=input(0);

elsif sel=“01”then

y<=input(1);

elsif sel=“10”then

y<=input(2);

else

y<=input(3);

end if;

end process;

end rtl;

实验结果

4选1数据选择器的截图:

仿真波形图:

实验2 四位比较器

一、实验目的

1.设计四位二进制码比较器,并在实验开发系统上验证。

2.学习层次化设计方法。

二、实验仪器与器材

1.EDA 开发软件 一套

2.微机 一台

3.实验开发系统 一台

4.打印机 一台

5.其它器件与材料 若干

三、实验说明

本实验实现两个4位二进制码的比较器,输入为两个4位二进制码0123A A A A 和

0123B B B B ,输出为M (A=B )

,G (A>B )和L (A

四、实验要求

1.用硬件描述语言编写四位二进制码 比较器的源文件; 2.对设计进行仿真验证;

3.编程下载并在实验开发系统上进行硬件验证

实验程序

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity vhdl_cmp is

port(A:in std_logic_vector(3 downto 0);

B:in std_logic_vector(3 downto 0);

m,g,l:out std_logic);

end vhdl_cmp ;

architecture behave of vhdl_cmp is

begin

p1:process(A,B)

begin

if(A>B)then

G<='1';M<='0';L<='0';elsif(A

G<='0';M<='0';L<='1';elsif(A=B)then

G<='0';M<='1';L<='0';else

G<='1';M<='1';L<='1';end if; end process p1;

end behave;

实验结果

仿真波形图:

功能:

时序仿真:

管脚分配:

实验3 并行加法器设计

一、试验目的

1.设计一个4位加法器。

2.体会用VHDL进行逻辑描述的优点。

3,熟悉层次化设计方法。

二、试验仪器与器材

1.EDA开发软件一套

2.微机一台

3.试验开发系统一台

4.打印机一台

5.其他器材和材料若干

三、试验说明

本试验实现一个4位二进制数加法器,其功能框图如图所示。试验时用高低电平开关作为输入,用数码管作为输出(或用发光二极管),管脚锁定可根据试验系统自行安排。四、实验要求

1.用硬件描述语言编写4位二进制数全加器的源文件;

2.对设计文件进行编译;

3.仿真设计文件;

4.编程下载并进行试验验证。

实验程序:

library ieee;

use ieee.std_logic_1164.all;

entity add4 is

port(a,b: in std_logic_vector(3 downto 0);

cin: in std_logic;

sum: out std_logic_vector(3 downto 0);

count: out std_logic);

end add4;

architecture behavioral of add4 is

begin

process(a,b,cin)

variable sum1: std_logic_vector(3 downto 0);

variable carry: std_logic;

begin

carry:=cin;

for i in 0 to 3 loop

sum1(i):=(a(i) xor b(i)) xor carry;

carry:=(a(i) and b(i)) or (carry and (a(i) or b(i))); end loop;

sum<=sum1;

count<=carry;

end process ;

end behavioral;

实验结果

仿真波形图:

管脚分配:

实验4 7人表决器

一.实验目的

学习表决器电路的设计方法并体会使用HDL进行设计的方法和优点。

二、实验仪器与器材

EDA开发软件一套

微机一台

实验开发系统一台

打印机一台

三、实验原理

用个开关作为表决器的7个输入变量,输入变量为‘1’时表示“赞同”;输入变量为‘0’时表示不赞同。输出接到一二极管上,灯亮表示通过,灯不亮表示不同。采用行为描述的设计,用一变量count表示选举通过的总人数,即7个开关中按下的总数,如果count>3,则表示通过。

实验程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity seven is

port(

a:in std_logic_vector(6 downto 0);

y:out std_logic);

end seven;

architecture one of seven is

begin

process(a)

variable i:std_logic_vector(2 downto 0);

begin

i:="000";

for j in 0 to 6 loop

if(a(j)='1')then i:=i+1;

else i:=i;

end if;

end loop;

译码程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity my_translate is

port(

a:in std_logic_vector(3 downto 0);

rst:std_logic;

dataout:out std_logic_vector(6 downto 0));

end my_translate;

architecture one of my_translate is

begin

process(a)

begin

case a is

when"0000"=>dataout<="0000001";

when"0001"=>dataout<="1001111";

when"0010"=>dataout<="0010010";

when"0011"=>dataout<="0000110";

when"0100"=>dataout<="1001100";

when"0101"=>dataout<="0100100";

when"0110"=>dataout<="0100000";

when"0111"=>dataout<="0001111";

when"1000"=>dataout<="0000000";

when"1001"=>dataout<="0000100";

when others=>dataout<="1111111";

end case;

end process;

end one;

if i>3 then y<='1';

else y<='0';

end if;

end process;

end one;

实验结果

管脚分配:

时序仿真:

功能仿真

实验5 计数器设计

一、实验目的

计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用HDL描述计数器类型模块的基本方法。

二、实验仪器与器材

1.EDA开发软件一套

2.微机一台

3.实验开发系统一台

4.打印机一台

5.其他器材与材料若干

三、实验说明

计数器是数字电路系统中最重要的功能模块之一,设计时可以采用原理图或HDL语言完成。下载验证时的计数时钟可选连续或单脉冲,并用数码管显示计数值。

四、实验要求

1.设计一个带有计数允许输入端、复位输入端和进位输入端的十进制计数器。

2.编制仿真测试文件,并进行功能仿真。

3.下载并验证计数器功能。

4.为上述设计建立元件符号。

5.在上述基础上分别设计按8421BCD码和二进制计数的100进制同步计数器。

实验程序

十进制:

方法一:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity cnt10 is

port(res:in std_logic;

clkin:in std_logic;

ep:in std_logic;

cout: out std_logic ;

sout:out std_logic_vector(3 downto 0));

end cnt10;

architecture behave of cnt10 is

signal count :std_logic_vector(3 downto 0);

begin

process(res,clkin,ep)

begin

if(res='1') then count<="0000";cout<='0';

elsif(ep='0' and rising_edge(clkin))

then if(count="1001")

then cout<='1';count<="0000";

else count<=count+1;cout<='0';

end if;

end if;

end process;

sout<=count;

end;

方法二:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_unsigned.all;

entity count is port(clk:in std_logic;

clr:in std_logic;en:in std_logic;

q:out std_logic_vector(3 downto 0);

cin:out std_logic);

end count;

architecture count of count is signal q0:std_logic_vector(3 downto 0); begin

q<=q0;

process(clk,clr)begin

if(clr='1')then q0<="0000";

cin<='0';

elsif(clk'event and clk='0')then

if(q0="1000")then

q0<=q0+1;

cin<='1';

else q0<=q0+1;

cin<='0';

if (q0="1001")then

q0<="0000";

end if;

end if;

end if;

end process;

end count;

七段译码管:

library ieee;

use ieee.std_logic_1164.all;

entity shumaguan is

port (data_in :in std_logic_vector(3 downto 0);

data_out : out std_logic_vector(6 downto 0)); end shumaguan;

architecture behave of shumaguan is

begin

process(data_in)

begin

case data_in is

when "0000"=>data_out<="1111111";

when "0001"=>data_out<="1111001";

when "0010"=>data_out<="0100100";

when "0011"=>data_out<="0110000";

when "0100"=>data_out<="0011001";

when "0101"=>data_out<="0010010";

when "0110"=>data_out<="1111111";

when "0111"=>data_out<="1111111";

when "1000"=>data_out<="1111111";

when "1001"=>data_out<="1111111";

when "1010"=>data_out<="1111111";

when "1011"=>data_out<="1111111";

when "1100"=>data_out<="1111111";

when "1101"=>data_out<="1111111";

when "1110"=>data_out<="1111111";

when "1111"=>data_out<="1111111";

end case;

end process;

end behave;

分频器:

LIBRARY IEEE;

USE IEEE.STD_LOGIC_1164.ALL;

USE IEEE.STD_LOGIC_UNSIGNED.ALL;

USE IEEE.STD_LOGIC_ARITH.ALL;

ENTITY c IS

GENERIC(N:INTEGER:=25);

PORT(

CLKIN:IN STD_LOGIC;

CLKOUT:OUT STD_LOGIC

);

END c;

ARCHITECTURE A OF MY_EDA_fpin IS

SIGNAL CNT:STD_LOGIC_VECTOR(N-1 DOWNTO 0); BEGIN

相关主题