收藏 分销(赏)

地大EDA实验报告.doc

上传人:仙人****88 文档编号:11227574 上传时间:2025-07-08 格式:DOC 页数:14 大小:280KB 下载积分:10 金币
下载 相关 举报
地大EDA实验报告.doc_第1页
第1页 / 共14页
地大EDA实验报告.doc_第2页
第2页 / 共14页


点击查看更多>>
资源描述
EDA实验报告 班级: 姓名: 学号: 指导老师:雷波 实验一 3-8译码器的实现 1.1 3-8译码器的文本描述 代码如下: library ieee; use ieee.std_logic_1164.all; entity program1 is port (A,B,C:in std_logic; D0,D1,D2,D3,D4,D5,D6,D7:out std_logic); end entity program1; architecture one of program1 is signal abc :std_logic_vector(2 downto 0); signal D :std_logic_vector(7 downto 0); begin abc <= A&B&C; process(abc) begin case abc is when "000"=>D<="10000000"; when "100"=>D<="01000000"; when "010"=>D<="00100000"; when "110"=>D<="00010000"; when "001"=>D<="00001000"; when "101"=>D<="00000100"; when "011"=>D<="00000010"; when "111"=>D<="00000001"; when others => null; end case; end process; D0<=D(7);D1<=D(6);D2<=D(5);D3<=D(4); D4<=D(3);D5<=D(2);D6<=D(1);D7<=D(0); end architecture one; 1.2 真值表 表1-2 3-8译码器真值表 A B C D7 D6 D5 D4 D3 D2 D1 D0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 1.3 仿真结果 图1.3 仿真波形图 实验二 扫描电路设计 2.1 原理图 图2.1 原理图 2.2 片选模块仿真(图2.1中模块1) 2.1.1 文本代码 library ieee; use ieee.std_logic_1164.all; entity program2 is port (A,B,C:in std_logic; D0,D1,D2,D3,D4,D5,D6,D7:out std_logic); end entity program2 ; architecture one of program2 is signal abc :std_logic_vector(2 downto 0); signal D :std_logic_vector(7 downto 0); begin abc <= A&B&C; process(abc) begin case abc is when "000"=>D<="11111110"; when "100"=>D<="11111101"; when "010"=>D<="11111011"; when "110"=>D<="11110111"; when "001"=>D<="11101111"; when "101"=>D<="11011111"; when "011"=>D<="10111111"; when "111"=>D<="01111111"; when others => null; end case; end process; D0<=D(7);D1<=D(6);D2<=D(5);D3<=D(4);D4<=D(3);D5<=D(2);D6<=D(1); D7<=D(0); end architecture one; 2.2.2 原理图 图2.2.2 片选模块原理图 2.2.3 仿真结果 图2.2.3 仿真结果图 2.3段选模块仿真(图2.1中模块2) 2.3.1 文本代码 library ieee; use ieee.std_logic_1164.all; entity LED7S IS port (A:in std_logic_vector(3 downto 0); LED7S:out std_logic_vector(7 downto 0)); end; architecture one of LED7S IS begin process(A) begin case A is when "0000" => LED7S <="01000000"; when "0001" => LED7S <="01111001"; when "0010" => LED7S <="00100100"; when "0011" => LED7S <="00110000"; when "0100" => LED7S <="00011001"; when "0101" => LED7S <="00010010"; when "0110" => LED7S <="00000010"; when "0111" => LED7S <="01111000"; when "1000" => LED7S <="00000000"; when "1001" => LED7S <="00010000"; when "1010" => LED7S <="00001000"; when "1011" => LED7S <="00000011"; when "1100" => LED7S <="01000110"; when "1101" => LED7S <="00100001"; when "1110" => LED7S <="00000110"; when "1111" => LED7S <="00001110"; when others => NULL; end case; end process; end; 2.3.2 仿真结果 图2.3.2 段选模块仿真结果图 2.4 分频模块仿真(图2.1中模块3) 2.4.1 文本代码 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_UNSIGNED.all; entity DVF IS port (CLK:in std_logic; FOUT:out std_logic); end; architecture one of DVF IS signal FULL:std_logic; begin P_REG: process(CLK) variable CNT8:integer range 1 to 2; begin if CLK'event and CLK='1' then if CNT8=2 then CNT8:=1; FULL<='1'; else CNT8:=CNT8+1; FULL<='0'; end if; end if; end process P_REG; P_DIV: process(FULL) variable CNT2:std_logic; begin if FULL'event and FULL='1' then CNT2:=NOT CNT2; if CNT2='1'then FOUT<='1'; else FOUT<='0'; end if; end if; end process P_DIV; end; 2.4.2 仿真分析 参数分析:根据程序2.4.1我们可以知道,控制实现分频的是变量CNT8的最大值,设其值为n(n=1,2,3...),通过改变n的值即得到2n分频,下面的波形图为分别取n=2,n=3,n=5时的输出波形。 (1) 图2.4.2-1为n=2时的仿真结果 图2.4.2-1 n=2的仿真波形 (2) 图2.4.2-2为n=3时的仿真结果 图2.4.2-2 n=3的仿真波形 (3) 图2.4.2-3为n=5时的仿真结果 图2.4.2-3 n=5的仿真波形 实验三 全减器的实现 3.1 一位二进制全减器 3.1.1 原理简介 如图3.1.1,全减器可实现二进制数a与b的计算,输出以差值Dout和借位Cout表示。 图3.1.1 全减器电路符号 3.1.2 全减器真值表 表3.1.2 全减器真值表 输入 输出 a b ci Dout Cout 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 1 1 0 0 1 0 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 3.2 文本文件调用图形文件并用例化语句实现全减器 3.2.1 利用半减器实现全减器原理图 如图3.2.1是利用两个半减器和一个或门实现的一位二进制全减器原理图: 图3.2.1 全减器实现原理图 3.2.2 半减器h_suber (1)半减器h_suber真值表 如下,表3.2.2为半减器真值表: 表3.2.2 半减器h_suber真值表 输入 输出 a b so co 0 0 0 0 0 1 1 1 1 0 1 0 1 1 0 0 (2)半减器h_suber图形实现 如下,图3.2.2-1为半减器原理图: 图3.2.2-1 半减器h_suber原理图 (3)半减器h_suber仿真结果 如下,图3.2.2-2为半减器仿真结果图: 图3.2.2-2 半减器h_suber仿真结果 将仿真结果与真值表3.2.2对比,结果为正确。 3.2.3 或门or2a (1)或门or2a真值表 如下,表3.2.3为或门or2a真值表: 表3.2.3 或门or2a真值表 输入 输出 a b c 0 0 0 0 1 1 1 0 1 1 1 1 (2)或门or2a图形实现 如下,图3.2.3-1为或门or2a原理图: 图3.2.2-1 或门or2a原理图 (3)仿真结果 如下,图3.2.2-2为或门or2a仿真结果图: 图3.2.2-2 或门or2a仿真结果 将仿真结果与真值表3.2.3对比,结果为正确。 3.2.4 全减器f_suber (1)例化语句调用图形文件 程序如下: library ieee; use ieee.std_logic_1164.all; entity f_suber IS port(ain,bin,cin: in std_logic; dout,cout: out std_logic); end entity f_suber; architecture one of f_suber IS COMPONENT h_suber --调用半减器声明语句 port(a,b: in std_logic; co,so: out std_logic); end COMPONENT; COMPONENT or2a --调用或门声明语句 port(a,b: in std_logic; c: out std_logic); end COMPONENT; SIGNAL d,e,f: std_logic; --定义三个信号作为内部连接线 begin u1:h_suber port MAP(a=>ain,b=>bin,co=>d,so=>e); --例化语句 u2:h_suber port MAP(a=>e,b=>cin,co=>f,so=>dout); --例化语句 u3:or2a port MAP(a=>f,b=>d,c=>cout); --例化语句 end architecture one; (2)工程文件配置 如下,图3.2.4-1为工程文件配置: 图3.2.4-1 工程文件配置 (3)仿真结果 如下,图3.2.4-2全减器f_suber仿真结果图 图3.2.4-2 全减器f_suber仿真结果 将仿真结果与真值表3.1.2对比,结果为正确。 3.3 文本文件调用文本文件并用例化语句实现全减器 3.3.1 半减器h_suber的文本实现 (1)根据表3.2.2半减器h_suber真值表可编写代码如下: library ieee; use ieee.std_logic_1164.all; entity h_suber is port(a,b:in std_logic; co,so:out std_logic); end entity h_suber; architecture one of h_suber is signal ab:std_logic_vector(1 downto 0); begin ab<=a&b; process(ab) begin case ab is when "00"=> so<='0';co<='0'; when "01"=> so<='1';co<='1'; when "10"=> so<='1';co<='0'; when "11"=> so<='0';co<='0'; when others=>NULL; end case; end process; end architecture one; (2)半减器h_suber仿真结果 运行3.3.1中的程序得到仿真结果如下: 图3.3.1 半减器h_suber仿真结果 将仿真结果与真值表3.2.2对比,结果为正确。 3.3.2 或门or2a的文本实现 (1)根据表3.2.3或门or2a真值表可编写代码如下: library ieee; use ieee.std_logic_1164.all; entity or2a is port(a,b:in std_logic; c:out std_logic); end entity or2a; architecture one of or2a is signal ab:std_logic_vector(1 downto 0); begin ab<=a&b; process(ab) begin case ab is when "00"=> c<='0'; when "01"=> c<='1'; when "10"=> c<='1'; when "11"=> c<='1'; when others=>NULL; end case; end process; end architecture one; (2)运行3.3.2中的程序得到或门or2a仿真结果如下: 图3.3.2 或门or2a仿真结果 将仿真结果与真值表3.2.3对比,结果为正确。 3.3.3 全减器f_suber (1)文本文件调用文本文件 程序如下: library ieee; use ieee.std_logic_1164.all; entity f_suber IS port(ain,bin,cin: in std_logic; dout,cout: out std_logic); end entity f_suber; architecture one of f_suber IS COMPONENT h_suber port(a,b: in std_logic; co,so: out std_logic); end COMPONENT; COMPONENT or2a port(a,b: in std_logic; c: out std_logic); end COMPONENT; SIGNAL d,e,f: std_logic; begin u1:h_suber port MAP(a=>ain,b=>bin,co=>d,so=>e); u2:h_suber port MAP(a=>e,b=>cin,co=>f,so=>dout); u3:or2a port MAP(a=>f,b=>d,c=>cout); end architecture one; (2)工程文件配置 如下,图3.3.3-1为工程文件配置: 图3.3.3-1 工程文件配置 (3)仿真结果 如下,图3.3.3-2为全减器f_suber仿真结果图 图3.3.3-2 全减器f_suber仿真结果 将仿真结果与真值表3.1.2对比,结果为正确。 3.4 图形文件调用图形文件实现全减器 3.4.1 半减器h_suber的图形实现 半减器h_suber的图形实现已经在3.2.2(2)中建立了文件,只需在此工程中添加该文件,并在全减器原理图中调用半减器文件即可; 3.4.2 或门or2a的图形实现 或门or2a的图形实现已经在3.2.3(2)中建立了文件,只需在此工程中添加该文件,并在全减器原理图中调用半减器文件即可; 3.4.3 全减器f_suber原理图 (1)全减器f_suber原理图已在图3.2.1中表示出来。 (2)工程文件配置 如下,图3.4.3-1为工程文件配置: 图3.4.3-1 工程文件配置 (3)仿真结果 如下,图3.4.3-2为全减器f_suber仿真结果图 图3.4.3-2 全减器f_suber仿真结果 将仿真结果与真值表3.1.2对比,结果为正确。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服