一位全减器的VHDL设计

合集下载

【设计】一位二进制全减器设计

【设计】一位二进制全减器设计

【关键字】设计南昌大学实验报告学生姓名:学号:89 专业班级:电子081实验类型:□ 验证□ 综合设计□ 创新实验日期:实验成绩:实验一1位二进制全减器设计一、实验目的1)熟悉实验设备和软件,掌握Quartus II 的VHDL文本设计及原理图设计全过程;2)熟悉简单组合电路的设计,掌握系统仿真,学会分析硬件尝试结果;二、实验内容与要求1)完成一位二进制全减器的设计,用LED显示输出结果;2)用分层设计的方法设计,顶层为全减器(文本输入法),底层为半减器(原理图输入法)和逻辑门组成;3)自行完成设计与仿真、波形分析、下载与硬件尝试等全过程,验证设计是否正确;三、设计思路/原理图首先根据一位二进制半减器运行原理,列出半减器真值表(如图一所示),并由真值表设计出半减器原理图(如图二),根据全减器真值表(图三)可用两个半减器和一个或门组成一位二进制全减器。

a b so co0 0 0 00 1 1 11 0 1 01 1 0 0图一半减器真值表a b c cout sub0 0 0 0 00 0 1 1 10 1 0 1 10 1 1 1 01 0 0 0 11 0 1 0 01 1 0 0 01 1 1 1 1图三全减器真值表图四由半减器组成的全减器原理图四、实验程序(顶层程序参考EDA教材88页一位二进制全加器顶层文本设计)底层(原理图输入)半加器连接图:定义或门:顶层(文本输入)LIBRARY IEEE; --1位二进制全减器顶层描述USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_m IS --定义f_m实体PORT (ain,bin,cin :IN STD_LOGIC;cout,sub:OUT STD_LOGIC);END ENTITY f_m;ARCHITECTURE one OF f_m IS --描述结构体COMPONENT h_m --定义h_m各引脚PORT ( a,b : IN STD_LOGIC ;co,so : OUT STD_LOGIC) ;END COMPONENT ;COMPONENT or2a --定义or2a各引脚PORT (a,b : IN STD_LOGIC;c : OUT STD_LOGIC) ;END COMPONENT ;SIGNAL d,e,f : STD_LOGIC ; --定义信号d,e,f的类型BEGIN --描述底层各元件的连接u1 : h_m PORT MAP (a=>ain, b=>bin, co=>d, so=>e) ;u2 : h_m PORT MAP (a=>e, b=>cin, co=>f, so=>sub);u3 : or2a PORT MAP (a=>d, b=>f, c=>cout);END ARCHITECTURE one ; --结束结构体描述五、实验步骤1.建立工作库文件夹和编辑设计文件1)在D盘新建立一个文件夹命名为f_m,选择ACEX1K芯片,保存下面的工程文件;2)打开quartus II,选择菜单File→New→Block diagram/schematic file,点击OK,输入半减器原理图,保存为h_m.bdf并选择菜单file→create/update→createVHDL component declaration files for current file2.选择菜单File→New→Block diagram/schematic file,点击OK,定义或门,保存为or2a.bdf并选择菜单file→create/update→create VHDL component declarati on filesfor current file3.选择菜单File→New→VHDL file,点击OK后在打开的界面下输入已设计的程序,保存为f_m.vhd;4.对f_m.vhd进行编译5.创建仿真文件f_m.vwf,将所有引脚拉入仿真文件,设定end time以及ain,bin,cin输入值,进行仿真6.选择assignments→pins 设置各引脚,并编译;7.下载程序,验证实验结果;六、仿真波形分析下图为实验所得的波形图:a b c d e f g h i区间ain bin cin cout sub LED6 LED5 a-b 0 0 0 0 0 灭灭b-c 0 0 1 1 1 亮亮c-d 0 1 0 1 1 亮亮d-e 0 1 1 1 0 亮灭e-f 1 0 0 0 1 灭亮f-g 1 0 1 0 0 灭灭g-h 1 1 0 0 0 灭灭h-i 1 1 1 1 1 亮亮借位情况,cout为本位输出,sub为向上借位的值,由上表可知,仿真结果与理论值(全减器真值表)一致,故仿真成功。

EDA技术实用教程-VHDL版课后答案

EDA技术实用教程-VHDL版课后答案

第一章1-1 EDA技术与ASIC设计和FPGA开发有什么关系? P3~4答:利用EDA技术进行电子系统设计的最后目标是完成专用集成电路ASIC的设计和实现;FPGA和CPLD是实现这一途径的主流器件。

FPGA和CPLD通常也被称为可编程专用IC,或可编程ASIC。

FPGA和CPLD的应用是EDA技术有机融合软硬件电子设计技术、SoC(片上系统)和ASIC设计,以及对自动设计与自动实现最典型的诠释。

1-2与软件描述语言相比,VHDL有什么特点? P6答:编译器将软件程序翻译成基于某种特定CPU的机器代码,这种代码仅限于这种CPU而不能移植,并且机器代码不代表硬件结构,更不能改变CPU的硬件结构,只能被动地为其特定的硬件电路结构所利用。

综合器将VHDL 程序转化的目标是底层的电路结构网表文件,这种满足VHDL设计程序功能描述的电路结构,不依赖于任何特定硬件环境;具有相对独立性。

综合器在将VHDL(硬件描述语言)表达的电路功能转化成具体的电路结构网表过程中,具有明显的能动性和创造性,它不是机械的一一对应式的“翻译”,而是根据设计库、工艺库以及预先设置的各类约束条件,选择最优的方式完成电路结构的设计。

l-3什么是综合?有哪些类型?综合在电子设计自动化中的地位是什么? P5什么是综合? 答:在电子设计领域中综合的概念可以表示为:将用行为和功能层次表达的电子系统转换为低层次的便于具体实现的模块组合装配的过程。

有哪些类型? 答:(1)从自然语言转换到VHDL语言算法表示,即自然语言综合。

(2)从算法表示转换到寄存器传输级(RegisterTransport Level,RTL),即从行为域到结构域的综合,即行为综合。

(3)从RTL级表示转换到逻辑门(包括触发器)的表示,即逻辑综合。

(4)从逻辑门表示转换到版图表示(ASIC设计),或转换到FPGA的配置网表文件,可称为版图综合或结构综合。

综合在电子设计自动化中的地位是什么? 答:是核心地位(见图1-3)。

EDA实训资料1·全加器&全减器程序

EDA实训资料1·全加器&全减器程序

给出1位全减器的VHDL描述。

首先设计1位半减器,然后用例化语句将它们连接起来底层文件半减器(h_suber)程序设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY h_suber ISPORT ( x , y : IN STD_LOGIC;diff , s_out : OUT STD_LOGIC ) ;END ENTITY h_suber;ARCHITECTURE fh1 OF h_suber ISSIGNAL abc : STD_LOGIC_VECTOR ( 1 DOWNTO 0 ) ;BEGINabc <= x & y ;PROCESS ( abc )BEGINCASE abc ISWHEN "00" => diff <= '0'; s_out <= '0' ;WHEN "01" => diff <= '1'; s_out <= '1' ;WHEN "10" => diff <= '1'; s_out <= '0' ;WHEN "11" => diff <= '0'; s_out <= '0' ;WHEN OTHER => NULL ;END CASE;END PROCESS;END ARCHITECTURE fh1 ;底层文件或门(or2a)程序设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY or2a ISPORT ( a , b : IN STD_LOGIC;c : OUT STD_LOGIC ) ;END ENTITY or2a;ARCHITECTURE one OF or2a ISBEGINC <= a OR b ;END ARCHITECTURE one;根据连接图,顶层文件全减器(f_suber)程序设计:LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY f_suber ISPORT ( xin , yin , sub_in : IN STD_LOGIC;diffout , sub_out : OUT STD_LOGIC ) ;END ENTITY f_suber;ARCHITECTURE fd1 OF f_suber ISCOMPONENT h_suberPORT ( x , y : IN STD_LOGIC;diff , s_out : OUT STD_LOGIC ) ;END COMPONENT ;COMPONENT or2aPORT ( a , b : IN STD_LOGIC;c : OUT STD_LOGIC ) ;END COMPONENT ;SIGNAL d , e , f : STD_LOGIC;BEGINu1 : h_suber PORT MAP ( x => xin , y => yin , diff => d , s_out => e );u2 : h_suber PORT MAP ( x => d , y => sub_in , diff => diffout , s_out => f ); u3 : or2a PORT MAP ( a => f , b => e , c => sub_out );END ARCHITECTURE fd1;全加器程序参照自动化同学课本,原理与全减器类似。

用VHDL结构描述设计一全减器

用VHDL结构描述设计一全减器

下面再将或门的VHDL程序描述如下:
ENTITY orgate IS PORT(A1,B1:IN BIT; O1:OUT BIT); END orgate;
ARCHITECTURE orgate_arc OF orgate IS BEGIN O1<= A1 OR B1; END orgate_arc;
I1 I2
U0 halfsub
temp_T
ห้องสมุดไป่ตู้
U1
FT
C_OUT
BEGIN U0:halfsub PORT MAP(I1,I2,temp_T,temp_c1); U1:halfsub PORT MAP(temp_T,C_IN,FT,temp_c2); U2:orgate PORT MAP(temp_c1,temp_c2,C_OUT); END fullsub_arc; 图中虚线框各元件之间 halfsub 的连线命名。temp_T将第一 temp_c2 个半减器的差位输出连到第 C_IN 二个半减器的输入端。信号 temp_c1 temp_c1将第一个半减器的借 U2 位输出连至“或”门的一个输入 端,信号temp_c2将第二个半 减器的借位输出连至“或”门的 另一个输入端。 用三个元件调用语句定义这三个连接关系。
用VHDL结构描述设计一全减器,全减器可由两个 半减器和一个或门组成。
I1 I2 C_IN
U0 temp_T U1 FT halfsub halfsub temp_c2 temp_c1 U2 C_OUT
首先用VHDL的行为描述设计半减器:
ENTITY halfsub IS PORT(A,B:IN BIT; T,C:OUT BIT); END halfsub; ARCHITECTURE halfsub_arc OF halfsub IS BEGIN PROCESS(A,B) BEGIN T<= A XOR B AFTER 10 ns; C <= (NOT A) AND B AFTER 10 ns; END PROCESS; END halfsub_arc;

vhdl 四输入表决器 二位二进制乘法器 一位二进制全减器等源代码及仿真波形

vhdl 四输入表决器 二位二进制乘法器 一位二进制全减器等源代码及仿真波形

将8421BCD转换为余3码源代码:Library ieee;Use ieee.std_logic_1164.all;Entity bcd isPort(a:in std_logic_vector(3 downto 0);y:out std_logic_vector(3 downto 0));End;Architecture rtl of bcd isBeginProcess(a)BeginCase a isWhen"0000"=>y<="0011";When"0001"=>y<="0100";When"0010"=>y<="0101";When"0011"=>y<="0110";When"0100"=>y<="0111";When"0101"=>y<="1000";When"0110"=>y<="1001";When"0111"=>y<="1010";When"1000"=>y<="1011";When"1001"=>y<="1100";When others=>y<="ZZZZ";End case;End process;End;仿真图形:(仿真结果均有延时,大约20ns)四输入表决器源代码:Library ieee;Use ieee.std_logic_1164.all;Entity bjq isPort(i:in std_logic_vector(3 downto 0);f:out std_logic);End;Architecture nm2 of bjq isBeginProcess(i)Begincase i isWhen"0000"=>f<='0';When"0001"=>f<='0';When"0010"=>f<='0';When"0011"=>f<='0';When"0100"=>f<='0';When"0101"=>f<='0';When"0110"=>f<='0';When"0111"=>f<='1';When"1000"=>f<='0';When"1001"=>f<='0';When"1010"=>f<='0';When"1011"=>f<='1';When"1100"=>f<='0';When"1101"=>f<='1';When"1110"=>f<='1';When"1111"=>f<='1';When others=>f<='Z';End case;End process;End;仿真图形:2位二进制相乘电路源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity multi isport(A,B:in std_logic_vector(1 downto 0);F:out std_logic_vector(3 downto 0));end;architecture bhv of multi isbeginprocess(A,B)beginif(A="01" and B="01" )thenF<="0001";elsif(A="01" and B="10")thenF<="0010";elsif(A="01" and B="11")thenF<="0011";elsif(A="10" and B="01")thenF<="0010";elsif(A="10" and B="10")thenF<="0100";elsif(A="10" and B="11")thenF<="0110";elsif(A="11" and B="01")thenF<="0011";elsif(A="11" and B="10")thenF<="0110";elsif(A="11" and B="11")thenF<="1001";elseF<="0000";end if;end process;end;仿真图形:一位二进制全减器源代码:library ieee;use ieee.std_logic_1164.all;use ieee.std_logic_unsigned.all;entity subtracter isport(A,B,Ci:in std_logic;F,Co:out std_logic);end;architecture bhv of subtracter isbeginprocess(A,B,Ci)beginif(A='0' and B='0' and Ci='0')thenF<='0';Co<='0';elsif(A='0' and B='0' and Ci='1')thenF<='1';Co<='1';elsif(A='0' and B='1' and Ci='0')thenF<='1';Co<='1';elsif(A='0' and B='1' and Ci='1')thenF<='0';Co<='1';elsif(A='1' and B='0' and Ci='0')thenF<='1';Co<='0';elsif(A='1' and B='0' and Ci='1')thenF<='0';Co<='0';elsif(A='1' and B='1' and Ci='0')thenF<='0';Co<='0';elseF<='1';Co<='1';end if;end process;end;仿真图形:开关控制电路源代码:Library ieee;Use ieee.std_logic_1164.all;Entity switch_control isPort(a,b,c:in std_logic;y:out std_logic);End;Architecture nm5 of switch_control isBeginProcess(a,b,c);V ariable comb:std_logic_vector(2 downto 0);BeginComb:=a&b&c;Case comb isWhen"000"=>y<='0';When"001"=>y<='1';When"011"=>y<='0';When"010"=>y<='1';When"110"=>y<='0';When"111"=>y<='1';When"101"=>y<='0';When"100"=>y<='1';When others=>y<='X';End case;End process;End;仿真图形:。

VHDL之一位全减器

VHDL之一位全减器

一位全减器实验实验目的:1.首先设计一位半减器,然后设计出半减器,diff是输出差,s_out是借位输出,sub_in是借位输入。

半减器的实验程序为:library ieee;use ieee.std_logic_1164.all;entity h_suber isport (x,y : in std_logic;diff,s_out : out std_logic);end h_suber ;architecture hdlarch of h_suber isbeginprocess(x,y)begindiff <= x xor y;s_out <= (not x) and y;end process;end hdlarch;2.以1位全减器为基本硬件,构成串行借位的8位减法器,要求用例化语句来完成此项设计(减法运算是 x – y - sun_in = diffr)。

以一位半减器为实体,生成器件,连接如下图的电路,使之构成以为全减器实验仿真波形:四位全减器实验1.实验原理:(1)利用前面设计的全减器(一位全减器)生成元件;(2)建立新的原理图,完成4位全减器的设计;(3)进行波形仿真验证;2.实验仿真波形图:7段数码显示译码器设计1、实验目的:学习7段数码显示译码器设计、多层次设计方法、和总线数据输入方式的仿真,并进行电路板下载验证。

2、实验原理:7段数码是纯组合电路,通常的小规模专用IC,如74或4000系列的器件只能作十进制BCD码译码,然而数字系统中的数据处理和运算都是2进制的,所以输出表达都是16进制的,为了满足16进制数的译码显示,最方便的方法就是利用VHDL译码程序在FPGA 或CPLD中实现。

本项实验很容易实现这一目的。

例2作为7段BCD码译码器的设计,输出信号LED7S的7位分别接如实验图2数码管的7个段,高位在左,低位在右。

例如当LED7S 输出为 "1101101" 时,数码管的7个段:g、f、e、d、c、b、a分别接1、1、0、1、1、0、1,接有高电平的段发亮,于是数码管显示“5”。

EDA技术与Verilog_HDL(潘松)第四章课后习题答案

EDA技术与Verilog_HDL(潘松)第四章课后习题答案
x 0 0 y 0 1 diff 0 1 s_out 0 1
0
1 1
1
0 0
1
0 1
0
1 0
1
0 0
1
1
1
1
0
1
0
1
0
1
1
1
0110 Nhomakorabea0
0
module f_suber(x,y,sub_in,diffr,sub_out); //一个二进制全减器顶层设计进行了阐述 output diffr,sub_out; input x,y,sub_in; wire e,d,f; h_suber u1(x,y,e,d); // h_suber u2(.x(e),.diff(diffr),.y(sub_in),.s_out(f));// or2a u3(.a(d),.b(f),.c(sub_out)); endmodule
reg [2:0]A ;
wire[7:0]Y ; reg G1 ,G2 ,G3;
decoder3_8 DUT ( G1 ,Y ,G2 ,A ,G3 );
initial begin $monitor($time,"A=%d,G1=%b,G2=%b, G3=%b,Y= %d\n",A, G1, G2, G3, Y); end

module MUXK (a1, a2, a3, s0, s1, outy); input a1, a2, a3, s0, s1; output outy; wire outy; wire tmp;

4-6 图4-26所示的是双2选1多路选择器构成的电路MUXK。对于其中MUX21A,当s=0 和s=1时,分别有y=a和y=b。试在一个模块结构中用两个过程来表达此电路。 答:参考实验1

《EDA技术实用教程》习题解答

《EDA技术实用教程》习题解答
y => b(i), sub_in => stmp(i), diffr => c(i), sub_out => stmp(i+1)); end generate ; end;
习题 5-6 根据图 5-23,写出顶层文件 MX3256.VHD 的 VHDL 设计文件。
第 1 章 概述
9
图 5-21 习题 5-4 图
解: VHDL 设计文件内容如下:
library ieee; use ieee.std_logic_1164.all;
entity exen is
port ( cl
: in std_logic;
clk0 : in std_logic;
out1 );
: out std_logic
out1 <= not tmp; end hdlarch; ⊕习题 5-5 给出 1 位全减器的 VHDL 描述。要求: (1) 首先设计 1 位半减器,然后用例化语句将它们连接起来,图 5-22 中 h_suber 是半减器,diffr 是输出差, s_out 是借位输出,sub_in 是借位输入。
解:
图 5-19 4 选 1 多路选择器
图 5-20 双 2 选 1 多路选择器
architecture hdlarch of MUXK is
signal tmp : std_logic;
begin
process(s0,a2,a3) begin
if s0 = '0' then
tmp <= a2;
else
解:用同步计数器来实现。(事实上要求设计的是一个袼雷码计数器)
考虑不同状态时,对应的 DFF 输入端的值:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一位全减器的VHDL设计
理工学院03电信(2)班黄金凤 030303074
一.实验目的
1. 熟悉Max+Plusll和GW48ED开发系统的使用;
2. 掌握一位半减器的VHDL设计;
3. 掌握一位半减器构建一位全减器的方法;
4. 元件例化语句的使用。

二•实验原理
由两个半减器和一个或门构成一个全减器。

首先,一位半减器的逻辑表达式:diff =xyxy=x=y
s_out = xy
表一半减器的真值表
其次,一位全减器的逻辑表达式:
diffr = sub_in ㊉diff
sub_out =s_out +sub_in *diff
表二一位全减器的真值表
根据上述的真值表了解半减器和全减器,并设计出VHDL的程序。

描述半减器的VHDL的程序如下:
ENTITY halfsub IS
PORT(A,B:IN BIT;
T,C:OUT BIT);
END halfsub;
ARCHITECTURE halfsub_arc OF halfsub IS
BEGIN
PROCESS(A,B)
BEGIN
T<= A XOR B AFTER 10 ns;
C <= (NOT A) AN
D B AFTER 10 ns;
描述或门的VHDL 程序如下:
ENTITY orgate IS
PORT(A1,B1:IN BIT;
O1:OUT BIT);
END orgate;
ARCHITECTURE orgate_arc OF orgate IS
BEGIN
O1<= A1 OR B1;
END orgate_arc;
然后设计全减器,以一些中间信号temp_T,temp_c1和temp_c2,将两个半减器,一个或门的端口连接起来形成对 全减器的结构描述。


10-5(b)所示虚线框有各元件之间的连线命名。

下面是全减器的 VHDL 程序描述:
ENTITY fullsub IS
PORT(I1,I2,C_IN:IN BIT;
FT,C_OUT:OUT BIT);
END fullsub;
ARCHITECTURE fullsub_arc OF fullsub IS
SIGNAL temp_T,temp_c1,temp_c2:BIT; COMPONENT halfsub
PORT(A,B:IN BIT; T,C:OUT BIT); END COMPONENT;
COMPONENT orgate
PORT(A1,B1:IN BIT; O1:OUT BIT);
END COMPONENT;
BEGIN
PORT MAP(l1,l2,temp_T,temp_c1); PORT MAP(temp_T,C_IN,FT,temp_c2);
PORT MAP(temp_c1,temp_c2,C_OUT); 其波形图如下:
END PROCESS; END halfsub_arc;
haIfsub
T C
其波形图如下:
Al
El
orgate
01
U0:halfsub U1:halfsub U2:orgate END fullsub_arc;
图10-舀全减器的实体和全减器的结构图
㈤全s 趨符^ (s 全if 揺的绅樹述
三. 实验步骤
1. 打开 Max+Plusll 软件,启动 File/New 菜单命令,选择 Text Editor File ,点击 OK
2.
在空白文件中输入如上的实验原理描述半减器的 VHDL 的程序,并保
存。

3.
在菜单 File/Save As 中键入文件名"halfsub.vhd ” ,点击 OK
4. 启动 Max+Plusll/Compiler, 点击Start,编译结束,按“确定”。

5. 再启动File/New 菜单命令,选择 Text Editor File ,点击OK 在空白文件中输入如上的实验原理描述或门 的VHDL 的程序,并
保存。

6. 在菜单 File/Save As 中键入文件名"orgate.vhd ” ,点击OK
7. 启动 Max+Plusll/Compiler, 点击Start,编译结束,按“确定”。

&启动File/New 菜单命令,选择 Text Editor File ,点击OK 在空白文件中输入如上的实验原理描述全减器 的VHDL 的程序,并保存。

9. 在菜单 File/Save As 中键入文件名"fullsub.vhd ” ,点击 OK
10. 启动 Max+Plusll/Compiler, 点击Start,编译结束,按“确定”。

11. 打开实验箱的电源,并把它和计算机相连。

11.
启动Assign/Device ,选择和实验箱相同的设备名,点击
OK
12.
选用模式5,从PIOO~PIO7选择3个作为输入,从
PIO8~PIO15中选择2个作为输出,根据实验箱配备的实 验书,选择相应的引脚号输入"Assig n/Pin/Locatio n/Chip.. ”中。

13. 启动 File/Project 中的 Set Project to Current File ,再启动 Max+Plusll/Programmer ,点击 Configure 。

14. 根据实验箱相应的数码管的亮暗来判断正确与否。

11
12
C IN
FT
full sub
C_OUT
C IN
FT
II
12
C_OUT
15. 实验结束关闭计算机和实验箱的电源。

四.实验仪器
计算机GW-48 型EDA 实验箱
五.实验总结
本实验是用VHDL的程序来仿真,根据实验箱上数码管的亮暗以达到全减器的功能。

在实验过程中,要特别注意先编译再下载,要把程序的文件名改为和实体名一样的VHD文件才能使程序编译通过;在设置引脚时,要根据
所选的模式,并在软件的引脚输入相应的实验仪的引脚号,引脚号输入一定要正确,才可以验证实验的准确与否;在编译程序时要下载所要运行的实验程序,所选的实验仪器名要正确,即要和所作的实验箱相同;选用模式的不同就要用不同的引脚号。

欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求。

相关文档
最新文档