版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与技术学院实 验 报 告 (学年度 第学期 )课程名称 EDA技术实验姓名学号专业计算机班级地点教师实验一:八位二进制补码一实验目的1 熟悉Max+PlusII和GW48EDA开发系统的使用;2 掌握八位二进制补码的VHDL设计;3 元件例化语句的使用。二实验原理 若原码为正,则补码等于原码;若原码为负,则补码为(2+原码)mod2。 三八位二进制补码程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY JACKAN IS PORT(rst:IN STD_LOGIC; din
2、:IN STD_LOGIC_VECTOR(7 DOWNTO 0); dout:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ENTITY JACKAN; ARCHITECTURE HAIXIA OF JACKAN ISSIGNAL tmp:STD_LOGIC_VECTOR(6 DOWNTO 0);BEGIN PROCESS(din,rst) BEGIN IF rst='0' THEN dout <=(OTHERS=>'0'); ELSIF din(7) ='1' THEN FOR i IN 0 TO 6 L
3、OOP tmp(i)<=NOT din(i); END LOOP; dout(6 DOWNTO 0) <= tmp+1; dout(7) <= din(7); ELSE dout <= din; END IF; END PROCESS;END ARCHITECTURE HAIXIA;四实验结果 五总结 8位二进制补码:寄存器主要用来存储8位二进制数据。高8位为符号位,不进行求反运算。余下7位根据高8位的数据状态进行相应操作。实验二.一位全减器的VHDL设计一. 实验目的1. 熟悉Max+PlusII和GW48EDA开发系统的使用;2. 掌握一位半减器的VHDL设计;3.
4、 掌握一位半减器构建一位全减器的方法;二实验原理 由两个半减器和一个或门构成一个全减器。首先,一位半减器的逻辑表达式: 其次,一位全减器的逻辑表达式: 三程序半减器的VHDL的程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL; entity Jackan is port( x,y : in std_logic; diff,s_out : out std_logic );end Jackan;architecture Haixia of Jackan isbeginprocess(x,y)
5、begin diff<=x xor y; s_out<=(not x) and y;end process;end architecture Haixia;描述或门的VHDL程序如下:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;entity haixia is port( x,y,sub_in : in std_logic; diffr,sub_out : out std_logic );end entity haixia;architecture Yaty of haixia i
6、scomponent Jackan port( x , y : in std_logic; diff,s_out : out std_logic );end component;signal t0,t1,t2:std_logic;beginu1:Jackan port map(x=>x,y=>y,diff=>t0,s_out=>t1);u2:Jackan port map(x=>t0,y=>sub_in,diff=>diffr,s_out=>t2);sub_out<=t1 or t2;END ARCHITECTURE Yaty; 四实验结果
7、 五总结一位全减器主要有:半减器,用来对输入数据取单个相异输出;异或门,对输入的数据进行异或运算。实验三.八位二进制乘法一实验目的1熟悉Max+PlusII和GW48EDA开发系统的使用;2掌握八位二进制乘法的VHDL设计;3元件例化语句的使用。二实验原理八位二进制乘法器是有由8位加法器构成的以时序方式设计的8位乘法器,采用逐项移位相加的方法来实现相乘。用乘数的各位数码,从低位开始依次与被乘数相乘,每相乘一次得到的积称为部分积,将第一次(由乘数最低位与被乘数相乘)得到的部分积右移一位并与第二次得到的部分积相加,将加得的和右移一位再与第三次得到的部分积相加,再将相加的结果右移一位与第四次得到的部
8、分积相加。直到所有的部分积都被加过一次。层次模块8位乘法器的层次结构,分为以下4个模块:右移寄存器模块:这是一个8位右移寄存器,可将乘法运算中的被乘数加载于其中,同时进行乘法运算的移位操作。加法器模块:这是一个8位加法器,进行操作数的加法运算。1位乘法器模块:完成8位与1位的乘法运算。锁存器模块:这是一个16位锁存器,同时也是一个右移寄存器,在时钟信号的控制下完成输入数值的锁存与移位。 简单流程图。 八位寄存器Haixia存放乘数a,从a的最低位开始,每次从Haixia中移出一位,送至1×8位乘法器Yaty中,同时将被乘数加至Yaty中,进行乘法运算,运算的结果再送至8位加法器Qua
9、nge中,同时取出16位移位寄存器Jackan的高8位与之进行相加,相加后结果即部分积存入Jackan中,进行移位后并保存。这样经过8次对乘数a的移位操作,所以的部分积已全加至Jackan中,此时锁存器Jackan存放的值即所要求的积。 输出结果(B)简单流程图16位移位寄存器Jackan8位加法器adder_8时钟、清零、移位控制信号,控制移位、清零或锁存1×8位乘法器Yaty被乘数b乘数a8位移位寄存器Haixia开始开始信号到来,置newstart为1寄存器Jackan置0时钟上升沿到来,寄存器Haixia置乘数a时钟下降沿,置newstart为零Haixia移出1位后与被乘数
10、放入Yaty中进行乘法运算,结果送至QuangeJackan取出高8位送Quange中,与Yaty得到结果进行加法运算,结果送至Jackan右移后并进行锁存输出每一步的运算结果,即输出Jackan的值,其中第八个值即为求得的积结束三程序 8位移位寄存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity haixia is -实体描述port(haixia _clk, haixia _load:in std_logic; haixi
11、a _in:in std_logic_vector(7 downto 0); haixia _out:out std_logic);end haixia;architecture arc_ haixia of haixia is -结构体描述 signal xiaoxia:std_logic_vector(7 downto 0); -定义信号变量begin process(haixia _clk, haixia _load) begin if haixia _clk'event and haixia _clk='1' then -时钟上升沿到来 if haixia _l
12、oad='1' then -锁存新数据 xiaoxia<=r8_in; else xiaoxia(6 downto 0)<=xiaoxia(7 downto 1); -数据右移 end if; end if; end process; haixia _out<=xiaoxia(0); -输出最低位end arc_ haixia;8位加法器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all; entity add
13、er_4 is -实体描述 port(a4_in :in std_logic; a4_a,a4_b:in std_logic_vector(3 downto 0); a4_s:out std_logic_vector(3 downto 0); a4_out:out std_logic); end adder_4; architecture arc_adder_4 of adder_4 is -结构体描述 signal ss:std_logic_vector(4 downto 0); -定义信号变量 signal aa,bb:std_logic_vector(4 downto 0); begin
14、 aa<='0'&a4_a; -为避免溢出,将0与a4_a连接 bb<='0'&a4_b; -将0与a4_b连接 ss<=aa+bb+a4_in; -执行加法运算 a4_s<=ss(3 downto 0); -输出结果 a4_out<=ss(4); -进位位 end arc_adder_4;adder_8library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity
15、 adder_8 is -实体描述port(a8_in :in std_logic; a8_a,a8_b:in std_logic_vector(7 downto 0); a8_s:out std_logic_vector(7 downto 0); a8_out:out std_logic);end adder_8;architecture arc_adder_8 of adder_8 is -结构体描述 component adder_4 -元件例化,调用4位加法器声明 port(a4_in :in std_logic; a4_a,a4_b:in std_logic_vector(3 dow
16、nto 0); a4_s:out std_logic_vector(3 downto 0); a4_out:out std_logic); end component; signal carry_out:std_logic; -定义信号变量begin u1:adder_4 -例化语句 port map(a8_in,a8_a(3 downto 0),a8_b(3 downto 0),a8_s(3 downto 0),carry_out); u2:adder_4 port map(carry_out,a8_a(7 downto 4),a8_b(7 downto 4),a8_s(7 downto 4
17、),a8_out);end arc_adder_8; 1位乘法器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity yaty is -实体描述port(yaty _x:in std_logic; yaty _y:in std_logic_vector(7 downto 0); yaty _out:out std_logic_vector(7 downto 0);end yaty;architecture arc_ yaty of
18、yaty is -结构体描述begin process(yaty _x, yaty _y) begin for i in 0 to 7 loop -循环完成8位与1位的乘法运算 yaty _out(i)<= yaty _y(i)and yaty _x; end loop; end process;end arc_ yaty16位移位寄存器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jackan is -实体描述por
19、t(jackan _clk, jackan _clr:in std_logic; jackan _in:in std_logic_vector(8 downto 0); jackan _out:out std_logic_vector(15 downto 0);end jackan;architecture arc_ jackan of jackan is -结构体描述 signal yaty:std_logic_vector(15 downto 0); -定义信号变量 begin process(jackan _clk, jackan _clr) begin if jackan _clr=&
20、#39;1' then -clr为高电平,清零 yaty<="0000000000000000" elsif jackan _clk'event and jackan _clk='1' then -时钟上升沿到来 yaty(6 downto 0)<=yaty(7 downto 1); -右移,并锁存低八位 yaty(15 downto 7)<= jackan _in; -将输入锁存到高8位 end if; end process; jackan _out<=yaty; -数据输出end arc_ jackan;8位乘法
21、器library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;use ieee.std_logic_arith.all;entity jackanandhaixia is -实体描述port(clk,start:in std_logic; jackan,haixia:in std_logic_vector(7 downto 0); result:out std_logic_vector(15 downto 0);end jackanandhaixia;architecture arc_ jackanandha
22、ixia of jackanandhaixia is -结构体描述component yaty -调用1位乘法器声明port(yaty_x:in std_logic; yaty_y:in std_logic_vector(7 downto 0); yaty_out:out std_logic_vector(7 downto 0);end component;component adder_8 -调用8位加法器声明port(a8_in :in std_logic; a8_a,a8_b:in std_logic_vector(7 downto 0); a8_s:out std_logic_vect
23、or(7 downto 0); a8_out:out std_logic);end component;component haixia -调用8位寄存器声明port(haixia_clk,r8_load:in std_logic; haixia_in:in std_logic_vector(7 downto 0); haixia_out:out std_logic);end component;component jackan -调用16位寄存器声明port(jackan _clk, jackan _clr:in std_logic; jackan _in:in std_logic_vect
24、or(8 downto 0); jackan _out:out std_logic_vector(15 downto 0);end component;signal gndint,newstart,qb:std_logic; -定义信号变量signal andsd:std_logic_vector(7 downto 0);signal dtbin:std_logic_vector(8 downto 0);signal dtbout:std_logic_vector(15 downto 0);begin result<=dtbout; gndint<='0'process(clk,start) begin if start='1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蛋糕店六一策划活动方案
- 读书捐赠活动方案
- 语文同构异教活动方案
- 街道交通安全活动方案
- 连锁药店运营管理与库存控制策略
- 女生文科营销方案
- 公益基金活动策划方案
- 美甲咨询团购活动方案
- 上海包装盒设计研发方案咨询
- 咸阳施工围挡施工方案
- 共管协议到期解除协议书
- 2024北森图表分析题库
- 《餐饮服务沟通技巧》课件
- 事故隐患内部报告奖励制度
- 乳腺癌全程、全方位管理乳腺癌患者依从性及心理健康管理幻灯
- 冬季心血管疾病的预防
- 骑行活动方案
- 2025营养指导员理论知识考核试题库及答案
- 手术切口的分类
- 浙江省宁波市余姚市六校2024-2025学年上学期七年级期中联考英语试卷
- 天津市和平区2024-2025学年七年级上期中考试数学试题
评论
0/150
提交评论