武汉大学数电仿真实验报告.docx

上传人:b****7 文档编号:25870688 上传时间:2023-06-16 格式:DOCX 页数:18 大小:192.55KB
下载 相关 举报
武汉大学数电仿真实验报告.docx_第1页
第1页 / 共18页
武汉大学数电仿真实验报告.docx_第2页
第2页 / 共18页
武汉大学数电仿真实验报告.docx_第3页
第3页 / 共18页
武汉大学数电仿真实验报告.docx_第4页
第4页 / 共18页
武汉大学数电仿真实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

武汉大学数电仿真实验报告.docx

《武汉大学数电仿真实验报告.docx》由会员分享,可在线阅读,更多相关《武汉大学数电仿真实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

武汉大学数电仿真实验报告.docx

武汉大学数电仿真实验报告

 

数电仿真实验

 

学院:

电气工程学院

姓名:

学号:

201

目录

实验一1位全加器的设计3

一、实验目的:

3

二、实验原理:

3

三、实验程序3

四、仿真结果3

实验二四位全加器的设计5

一、实验目的:

5

二、实验原理:

5

三、实验程序5

四、仿真结果5

实验三三输入与门、三输入或门7

一、实验目的:

7

二、实验原理7

三、实验程序7

四、仿真结果8

实验四8-3优先编码器9

一、实验目的:

9

二、实验原理:

9

三、实验程序9

四、仿真结果9

实验五3-8译码器11

一、实验目的:

11

二、实验原理:

11

三、实验程序:

11

四、仿真结果11

实验六八位十进制频率计实验13

一、实验目的:

13

三、实验程序13

四、实验波形16

实验一1位全加器的设计

一、实验目的:

1.掌握quarters软件使用流程。

2.初步掌握verilog的编程方法。

二、实验原理:

一位全加器的真值表如下:

a

b

C1

Sum

Ch

0

0

0

0

0

0

0

1

1

0

0

1

0

1

0

0

1

1

0

1

1

0

0

1

0

1

0

1

0

1

1

1

0

0

1

1

1

1

1

1

一位全加器的逻辑表达式为:

Sum=a^b^c1

Ch=a&b\(a^b)&c1

三、实验程序

modulefulladder(a,b,c1,ch,sum);

inputa,b,c1;

outputch,sum;

regch,sum;

always@(aorborc1)

begin

sum=a^b^c1;

ch=a&b|(a^b)&c1;

end

endmodule

四、仿真结果

实验二四位全加器的设计

一、实验目的:

1.掌握图形层次设计方法;

2.熟悉QuartusII8.0软件的使用及设计流程;

3.掌握全加器原理,能进行多位加法器的设计;

二、实验原理:

加法器是数字系统的基本逻辑器件。

例如:

为了节省资源,减法器和硬件乘法器都可由加法起来构成。

多位加法器的构成有两种方式:

并行进位和串行进位方式。

并行进位加法器设有并行进位产生逻辑,运算速度快;串行进位方式是将全加器级联构成多位加法器。

通常,并行加法器比串行加法器占用更多的资源,并且随着位数的增加,相同位数的并行加法器比串行加法器的资源占用差距也会越来越大。

4位二进制并行加法器和串行级联加法器占用几乎相同的资源。

这样,多位数加法器由4位二进制并行加法器级联构成是较好的折中选择,因此本实验中的4位加法器采用4个1位二进制并行加法器级联而成。

三、实验程序

moduletriplegate(a,b,c,out1,out2);

inputa,b,c;

outputout1,out2;

regout1,out2;

always@(aorborc)

begin

out1=a&b&c;

out2=a^b^c;

end

endmodule

四、仿真结果

实验三三输入与门、三输入或门

一、实验目的:

1.理解简单组合电路设计方法。

2.掌握基本门电路的应用。

二、实验原理

1.三输入与门真值表

A

B

C

OUT

0

0

0

0

0

0

1

0

0

1

0

0

0

1

1

0

1

0

0

0

1

0

1

0

1

1

0

0

1

1

1

0

2。

三输入或门真值表

A

B

C

OUT

0

0

0

0

0

0

1

1

0

1

0

1

0

1

1

1

1

0

0

1

1

0

1

1

1

1

0

1

1

1

1

1

3.三输入与门输出:

out=a&b&c;

三输入或门输出:

out=a^b^c;

三、实验程序

moduleymhhm(a,b,c,x,y);

inputa,b,c;

outputx,y;

regx,y;

always@(aorborc)

begin

x=a&b&c;

y=a^b^c;

end

endmodule

四、仿真结果

 

实验四8-3优先编码器

一、实验目的:

1、熟悉常用编码器的功能逻辑。

2、熟悉VERILOG的代码编写方法。

二、实验原理:

8-3优先编码器的真值表

X1

X2

X3

X4

X5

X6

X7

X8

Y2

Y1

Y0

X

X

X

X

X

X

0

X

0

0

0

X

X

X

X

X

0

1

X

0

0

1

X

X

X

X

0

1

1

X

0

1

0

X

X

X

0

1

1

1

X

0

1

1

X

X

0

X

1

0

0

X

0

1

1

1

1

X

1

0

1

0

1

1

1

1

1

1

X

1

1

0

1

1

1

1

1

1

1

X

1

1

1

逻辑表达式:

Y2=X4&X5&X6&X7;

Y1=~(~(X2)&X4&X5|~(X3)&X4&X5|~(X6)|~(X7));

Y0=~(~(X1)&X2&X4&X6|~(X3)&X4&X6|~(X5)&X6|~(X7));

三、实验程序

moduleencode(X1,X2,X3,X4,X5,X6,X7,X8,Y2,Y1,Y0);

inputX1,X2,X3,X4,X5,X6,X7,X8;

outputY2,Y1,Y0;

regY2,Y1,Y0;

always@(X1orX2orX3orX4orX5orX6orX7orX8)

begin

Y2=X4&X5&X6&X7;

Y1=~(~(X2)&X4&X5|~(X3)&X4&X5|~(X6)|~(X7));

Y0=~(~(X1)&X2&X4&X6|~(X3)&X4&X6|~(X5)&X6|~(X7));

end

endmodule

四、仿真结果

实验五3-8译码器

一、实验目的:

1、熟悉常用译码器的功能逻辑

2、掌握复杂译码器的设计方法

二、实验原理:

G1、G2、G3为使能端、A、B、C为输入端,Y0-Y7为输出端;

3-8译码器的真值表:

A

B

C

Y0

Y1

Y2

Y3

Y4

Y5

Y6

Y7

0

0

0

0

1

1

1

1

1

1

1

0

0

1

1

0

1

1

1

1

1

1

0

1

0

1

1

0

1

1

1

1

1

0

1

1

1

1

1

0

1

1

1

1

1

0

0

1

1

1

1

0

1

1

1

1

0

1

1

1

1

1

1

0

1

1

1

1

0

1

1

1

1

1

1

0

1

1

1

1

1

1

1

1

1

1

1

0

三、实验程序:

moduledencode(A,B,C,Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7);

inputA,B,C;

outputY0,Y1,Y2,Y3,Y4,Y5,Y6,Y7;

regY0,Y1,Y2,Y3,Y4,Y5,Y6,Y7;

always@(AorBorC)

begin

Y0=A^B^C;

Y1=A^B^~C;

Y2=A^~B^C;

Y3=A^~B^~C;

Y4=~A^B^C;

Y5=~A^B^~C;

Y6=~A^~B^C;

Y7=~A^~B^~C;

end

endmodule

四、仿真结果

实验六八位十进制频率计实验

一、实验目的:

1、进一步了解VERILOG语言功能

2、了解EDA在高频工作下的优势,这是单片机无法比拟的

二、实验原理:

采用一个标准的基准时钟,在单位时间如1s里对被测信号的脉冲数进行计数,即为信号的频率。

8位数字频率计的顶层框图如图所示,整个系统可分为4个模块:

控制模块、计数测量模块、锁存器模块和显示模块。

teten

 

计数

模块

显示

模块

 

锁存器

控制

模块

待测信号

load

锁存

load

标准时钟

clrcnt

 

三、实验程序

十进制计数器CNT10程序:

libraryieee;

useieee.std_logic_1164.all;

entitycnt10isport(clk:

instd_logic;

clr:

instd_logic;

ena:

instd_logic;

cq:

outintegerrange0to9;

carry_out:

outstd_logic);

endcnt10;

architecturebehavofcnt10issignalcqi:

integerrange0to9;

beginprocess(clr,clk,ena)

begin

if(clr='1')thencqi<=0;

elsif(clk'eventandclk='1')then

if(ena='1')then

if(cqi=9)then

cqi<=0;

carry_out<='1';

else

cqi<=cqi+1;

carry_out<='0';

endif;

endif;

endif;endprocess;cq<=cqi;

endbehav;

32位锁存器REG32B程序:

libraryieee;

useieee.std_logic_1164.all;

entityreg32bisport(load:

instd_logic;

rst:

instd_logic;

din:

instd_logic_vector(31downto0);

dout:

outstd_logic_vector(31downto0));

endreg32b;

architecturebehavofreg32bis

signaldata:

std_logic_vector(31downto0);

beginprocess(rst,load)

begin

ifrst='1'thendata<=(others=>'0');

elsif(load'eventandload='1')thendata<=din;

endif;

dout<=data;endprocess;endbehav;

数码管译码显示DELED的程序:

LIBRARYIEEE;

USEIEEE.STD_LOGIC_1164.ALL;

ENTITYDELEDISPORT(S:

INSTD_LOGIC_VECTOR(3DOWNTO0);A,B,C,D,E,F,G,H:

OUTSTD_LOGIC);

ENDDELED;

ARCHITECTUREBEHAVOFDELEDISSIGNALDATA:

STD_LOGIC_VECTOR(3DOWNTO0);

SIGNALDOUT:

STD_LOGIC_VECTOR(7DOWNTO0);

BEGINDATA<=S;

PROCESS(DATA)

BEGINCASE

DATAISWHEN"0000"=>DOUT<="00111111";

WHEN"0001"=>DOUT<="00000110";

WHEN"0010"=>DOUT<="01011011";

WHEN"0011"=>DOUT<="01001111";

WHEN"0100"=>DOUT<="01100110";

WHEN"0101"=>DOUT<="01101101";

WHEN"0110"=>DOUT<="01111101";

WHEN"0111"=>DOUT<="00000111";

WHEN"1000"=>DOUT<="01111111";

WHEN"1001"=>DOUT<="01101111";

WHEN"1010"=>DOUT<="01110111";

WHEN"1011"=>DOUT<="01111100";

WHEN"1100"=>DOUT<="00111001";

WHEN"1101"=>DOUT<="01011110";

WHEN"1110"=>DOUT<="01111001";

WHEN"1111"=>DOUT<="01110001";

WHENOTHERS=>DOUT<="00000000";

8ENDCASE;

ENDPROCESS;

H<=DOUT(7);

G<=DOUT(6);

F<=DOUT(5);

E<=DOUT(4);

D<=DOUT(3);

C<=DOUT

(2);

B<=DOUT

(1);

A<=DOUT(0);

ENDBEHAV;

数码管扫描SELTTIME的程序:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityseltimeisport(clk:

instd_logic;

din:

instd_logic_vector(31downto0);

daout:

outstd_logic_vector(3downto0);

sel:

outstd_logic_vector(2downto0));endseltime;

architecturebehavofseltimeissignalsec:

std_logic_vector(2downto0);

beginprocess(clk)

beginif(clk'eventandclk='1')then

if(sec="111")thensec<="000";

elsesec<=sec+1;

endif;

endif;

endprocess;

process(sec,din(31downto0))begincasesecis

when"000"=>daout<=din(3downto0);

when"001"=>daout<=din(7downto4);

when"010"=>daout<=din(11downto8);

when"011"=>daout<=din(15downto12);

when"100"=>daout<=din(19downto16);

when"101"=>daout<=din(23downto20);

when"110"=>daout<=din(27downto24);

when"111"=>daout<=din(31downto28);

whenothers=>null;

endcase;

endprocess;

sel<=sec;

endbehav;

作用:

锁存信号输出给DIN[31..0],然后由SELTIME进行扫描输出,当SEL为”000”时选通第一个CNT10,输出到DELED进行译码输出。

依次类推。

四、实验波形

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 工作范文 > 行政公文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1