logo资料库

数字电路与逻辑设计实验报告.docx

第1页 / 共7页
第2页 / 共7页
第3页 / 共7页
第4页 / 共7页
第5页 / 共7页
第6页 / 共7页
第7页 / 共7页
资料共7页,全文预览结束
数字电路与逻辑设计实验报告
数字电路与逻辑设计实验报告 一、实验名称和实验任务要求 1、用 VHDL 语言设计实现一个 4 选 1 数据选择器,根据地址端的不同取值选择不同的数 据端到输出端,仿真验证其功能。 2、用 VHDL 语言设计实现一个共阴极 7 段数码管译码器,仿真验证其功能。 3、用 VHDL 语言设计实现一个分频系数为 10,分频输出信号占空比为 50%的分频器,仿 真验证其功能。 4、用 VHDL 语言设计实现一个带异步复位的 8421 码十进制计数器,仿真验证其功能。 将分频器、计数器和数码管译码器 3 个电路进行连接,实现一个加 1 的计数器,并在数码 管上显示计数结果,仿真验证其功能。顶层设计用图形法或 vhdl 例化,均可。 二、电路设计及 VHDL 代码及注释 1. 4 选 1 数据选择器 代码: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; entity BAT is port(a,b:in std_logic; s1,s2,s3,s4:in std_logic; en:in std_logic; y: out std_logic); end entity BAT; architecture one of BAT is signal ab:std_logic_vector(1 downto 0); begin ab <= a&b; process(ab,s1,s2,s3,s4) begin case ab is when "00" => y<=s1; when "01" => y<=s2; when "10" => y<=s3; when "11" => y<=s4; when others => null; end case; end process; end architecture one;
仿真波形图: 波形图分析: en 为 1 时,当输入 ab 为 00 时,输出为 s1; 当输入 ab 为 01 时,输出为 s2; 当输入 ab 为 10 时,输出为 s3; 当输入 ab 为 11 时,输出为 s4; 2. 共阴极 7 段数码管译码器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shiyan IS PORT(A:IN STD_LOGIC_VECTOR(3 DOWNTO 0); B:OUT STD_LOGIC_VECTOR(6 DOWNTO 0); C:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END shiyan; ARCHITECTURE encoder_arch OF shiyan IS BEGIN PROCESS(A) BEGIN C<="011111"; CASE A IS WHEN"0000"=> B<="1111110";--0 WHEN"0001"=> B<="0110000";--1 WHEN"0010"=> B<="1101101";--2 WHEN"0011"=> B<="1111001";--3
WHEN"0100"=> B<="0110011";--4 WHEN"0101"=> B<="1011011";--5 WHEN"0110"=> B<="1011111";--6 WHEN"0111"=> B<="1110000";--7 WHEN"1000"=> B<="1111111";--8 WHEN"1001"=> B<="1111011";--9 WHEN OTHERS=> B<="ZZZZZZZ"; END CASE; END PROCESS; END encoder_arch; 波形图:
波形图分析:A 为输入,A0-A3 为由低位到高位变化,B 是数码管的各个部分,随着 A 输 入的变化,B 数码管对应译码出相应的数字显示出来。 3. 分频系数为 10,分频输出信号占空比为 50%的分频器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; Use ieee.std_logic_arith.all; Entity shiyan6 is generic(N:integer:=10); port( clkin,CLR1:IN std_logic; clkout:OUT std_logic); End shiyan6; Architecture a of shiyan6 is signal cnt:integer range 0 to n/2-1; signal temp:std_logic; Begin process(clkin,CLR1) begin if CLR1 = '1' then cnt<=0; elsif(clkin'event and clkin='1')then if(cnt=n/2-1)then cnt<=0; temp<=NOT temp; else cnt<=cnt+1; end if; end if; end process; clkout<=temp; End a;
波形图: 仿真波形图分析: 实现了分频系数为 10,分频输出信号占空比为 50% 4. 带异步复位的 8421 码十进制计数器 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY shiyan4 IS PORT( clk,reset:IN STD_LOGIC; q:OUT STD_LOGIC_VECTOR(3 DOWNTO 0)); END shiyan4; ARCHITECTURE a OF shiyan4 IS SIGNAL q_temp:STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(clk,reset) BEGIN IF reset='0' THEN q_temp <="0000"; ELSIF clk'EVENT AND clk='1' THEN IF q_temp="1001" THEN q_temp <="0000"; ELSE q_temp <=q_temp+1; END IF; END IF; END PROCESS; q<= q_temp; END a;
波形图: 运行前: 运行后: 波形分析:8421 十进制计数器随着时钟的信号进行计数,restart 是复位,当复位为零的时候计数器重新计 数。 5.组合电路
波形图: 波形图分析:实现了加 1 的计数器 三、问题分析 VHDL 文件名与实体名如果不一致,会导致编译的错误,如果更改文件名还是不行的话 可以重新建立工程文件。 实验 5 电路连接后编译失败 后完善分频器的设计并将电路输入端输出端名称修改。 四、总结及结论 通过本次实验,一方面巩固了前期所学的数电知识,最重要的是学习了 VHDL 语言并进 一步熟悉了 quartus 软件的使用,学习了更多 quartus 的功能,并可以通过仿真来验证电路 是否正确。仿真的时候注意总时间的选取和输入变量的周期,要会看出来自己的仿真波形是 否是正确的。
分享到:
收藏