EDA实验报告(四选一、四位比较器、加法器、计数器、巴克码发生器)

 

EDA实验报告

 

姓名

学号

班级

                   

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

一、实验目的

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

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

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

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

二、实验仪器与器材

   1.EDA开发软件                  一套

   2.微机                          一台

   3.实验开发系统                  一台

   4.打印机                        一台

三、实验说明

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

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

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

四、实验要求

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

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

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

五、实验结果

  4选1数据选择器的原理图:

仿真波形图:

管脚分配:

               实验2   四位比较器

一、实验目的

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

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

二、实验仪器与器材

   1.EDA开发软件                 一套

   2.微机                         一台

   3.实验开发系统                 一台

   4.打印机                       一台

   5.其它器件与材料               若干

三、实验说明

本实验实现两个4位二进制码的比较器,输入为两个4位二进制码,输出为M(A=B),G(A>B)和L(A<B)(如图所示)。用高低电平开关作为输入,发光二极管作为输出,具体管脚安排可根据试验系统的实际情况自行定义。

四、实验要求

   1.用硬件描述语言编写四位二进制码

比较器的源文件;

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

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

硬件验证。

 

                                                   四位比较器功能框图

五、实验结果

四位比较器VHDL源文件:

library ieee;

use ieee.std_logic_1164.all;

entity comp4 is

        port( A3,A2,A1,A0: in std_logic;

            B3,B2,B1,B0: in std_logic;

            G,M,L: out std_logic);

end comp4;

architecture behave of comp4 is

begin

p1: process(A3,A2,A1,A0,B3,B2,B1,B0)

   variable comb1,comb2: std_logic_vector(3 downto 0);

   begin

     comb1:=A3&A2&A1&A0;

comb2:=B3&B2&B1&B0;

if(comb1>com2) then G<=’1’; M<=’0’; L<=’0’;

  elsif(comb1<comb2) then M<=’1’; G<=’0’; L<=’0’;

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

end if;

end process p1;

end behave;

仿真波形图:

管脚分配:

                        试验并行加法器设计

一、试验目的

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

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

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

二、试验仪器与器材

   1.EDA开发软件                    一套

   2.微机                            一台

   3.试验开发系统                    一台

   4.打印机                          一台

   5.其他器材和材料                  若干

三、试验说明

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

四、实验要求

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

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

3.仿真设计文件;

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

五、试验结果

4位二进制全加器的源文件:

library ieee;

use ieee.std_logic_1164.all;

entity adder4 is

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

             cin: in std_logic_vector(3 downto 0);

             sum: out std_logic_vector(3 downto 0);

             count: out std_logic);

end adder4;

architecture behavioral of adder4 is

begin

p1:process(a,b,cin)

    variable vsum: std_logic_vector(3 downto 0);

    variable carry: std_logic;

  begin

carry:=cin;

for i in 0 to 3 loop

       vsum(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<=vsum;

count<=carry;

  end process p1;

end behavioral;

仿真波形图:

管脚分配:

实验计数器设计

一、实验目的

计数器是实际中最为常用的时序电路模块之一,本实验的主要目的是掌握使用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 counter10 is

         port(en,reset,clk:in std_logic;

                   q:buffer std_logic_vector(3 downto 0);

                   co:out std_logic);

end counter10;

architecture behav of counter10 is

begin

    process(clk,en)

    begin

           if clk'event and clk='1' then

                   if reset='1' then q<="0000";           

                    elsif en='1' then

                       if q<"1001" then q<=q+'1';

                               else q<="0000";

                       end if;

                  end if;

          end if;

   end process; 

co<='1' when q="1001" else '0';

end behav;

仿真波形图:

管脚分配:

4_7译码器程序:

library ieee;

use ieee.std_logic_1164.all;

entity decoder4_7 is

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

         outsign: out std_logic_vector (6 downto 0));

 end decoder4_7;

architecture behave of decoder4_7 is

      begin

    process(insign)

        begin

         case insign is

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

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

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

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

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

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

            when "0110"=>outsign<="1100000";

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

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

            when "1001"=>outsign<="0001100";

            when OTHERS=>outsign<="1111111";

            end case;

         end process;

 end behave ;

100进制计数器原理图:

仿真波形图:

管脚分配:

                        实验5    巴克码发生器

一、实验目的

1.实现一个在通信领域中经常使用的巴克码发生器。

2.掌握用大规模可编程逻辑器件实现时序电路的方法。

二、实验仪器与器材

1.EDA开发软件                   一套

2.微机                           一台

3.实验开发系统                   一台

4.打印机                         一台

5.其它器件与材料                 若干

三、实验说明

巴克码发生器在数据通信、雷达和遥控领域有相当广泛的应用。它能自动产生周期性的序列码。本实验要求产生的序列码信号为(1110010),可以用寄存器或同步时序电路实现。为了能够通过实验开发系统验证试验结果,可以使用两个输入端,其中一个输出端同时输出巴克码,另一个输出端输出节拍。巴克码发生器的功能框图如图所示。

四、实验要求

1.写出全部设计文件。

2.编写测试向量,进行功能仿真。

3.下载并用实验板验证。

五、实验结果

巴克码发生器程序:

library ieee;

use ieee.std_logic_1164.all;

use ieee.std_logic_arith.all;

use ieee.std_logic_unsigned.all;

entity back is

 port(clk,reset:in std_logic;

     dout1,dout2:out std_logic);

end back;

architecture behave of back is

 signal count7:integer range 0 to 6;

  begin

    process(clk,reset)

    begin

      if reset='1' then count7<=0;

      elsif clk'event and clk='1' then

          if count7<6 then

            count7<=count7+1;

            else count7<=0;

          end if;

      end if;

      dout2<=clk;

    end process;

 process(count7)

  begin

     case count7 is

      when 0=>dout1<='1';

      when 1=>dout1<='1';

      when 2=>dout1<='1';

      when 3=>dout1<='0';

      when 4=>dout1<='0';

      when 5=>dout1<='1';

      when 6=>dout1<='0';

      when others=>dout1<='0';

      end case;

    end process;

end behave;

仿真波形图:

管脚分配:

 

第二篇:EDA技术》实验报告8位二进制加法器设计

《EDA技术》实验报告

实验名称: 8位二进制全加器设计

 

姓名:   

班级:   

学号:   

实验日期:20##-3-29

指导教师:


一、实验设计要求

以一位二进制全加器为基本元件,用例化语句写出8位并行二进制全加器的顶层文件,并讨论此加法器的电路特性。

二、设计原理

电路结构图或原理图

电路功能描述

定义了8位二进制全加器顶层设计元件端口信号,输入端口:AIN, BIN,是八个二进制数,数据类型被定义为STD_LOGIC_VECTOR。 CIN是输入的进位,数据类型IN STD_LOGIC;输出端口:SUM为和,数据类型IN STD_LOGIC COUT为输出的进位。

三、实验程序

程序1:一位二进制全加器设计顶层描述

功能:程序功能简介

程序2:8位并行二进制全加器顶层文件

功能:程序功能简介

四、编译及仿真结果

选用器件型号cyclone

编译后使用器件资源情况、引脚配置情况(硬件实验)

仿真结果显示:

该 设计是成功的。输入的进位也要加上去。 0---255 全加器的COUNT 没有进位,而当加到256,COUNT=1,SUM输出0.

五、总结

.1 编译不通过,检查后发现在建立工程时,同一工程的所有文件都必须放在同一文件夹中,而这一步没做。

2 程序中没有将文件名与实体名保持一致出错。输入半加器的VHDL程序保存文件,将输入的VHDL语言程序保存为h _adder.vhd.

3不知道如何将输入/输出引脚号都添加到矢量波形编辑窗口中。

解决办法:view—utility window—noder finder 将需要引脚拖拽。

相关推荐