数电实验Word文档下载推荐.docx

上传人:b****2 文档编号:151867 上传时间:2023-04-28 格式:DOCX 页数:15 大小:51.04KB
下载 相关 举报
数电实验Word文档下载推荐.docx_第1页
第1页 / 共15页
数电实验Word文档下载推荐.docx_第2页
第2页 / 共15页
数电实验Word文档下载推荐.docx_第3页
第3页 / 共15页
数电实验Word文档下载推荐.docx_第4页
第4页 / 共15页
数电实验Word文档下载推荐.docx_第5页
第5页 / 共15页
数电实验Word文档下载推荐.docx_第6页
第6页 / 共15页
数电实验Word文档下载推荐.docx_第7页
第7页 / 共15页
数电实验Word文档下载推荐.docx_第8页
第8页 / 共15页
数电实验Word文档下载推荐.docx_第9页
第9页 / 共15页
数电实验Word文档下载推荐.docx_第10页
第10页 / 共15页
数电实验Word文档下载推荐.docx_第11页
第11页 / 共15页
数电实验Word文档下载推荐.docx_第12页
第12页 / 共15页
数电实验Word文档下载推荐.docx_第13页
第13页 / 共15页
数电实验Word文档下载推荐.docx_第14页
第14页 / 共15页
数电实验Word文档下载推荐.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

数电实验Word文档下载推荐.docx

《数电实验Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《数电实验Word文档下载推荐.docx(15页珍藏版)》请在冰点文库上搜索。

数电实验Word文档下载推荐.docx

signalcnt:

integerrange0to12499999;

signalclk_tmp:

std_logic;

begin

process(clk1)

begin

if(clk1'

eventandclk1='

1'

)then

ifcnt=12499999then

cnt<

=0;

clk_tmp<

=notclk_tmp;

else

=cnt+1;

endif;

endif;

endprocess;

clk_out<

=clk_tmp;

ENTITYcount10IS

PORT(

clk2,clear2:

INSTD_LOGIC;

q:

OUTSTD_LOGIC_VECTOR(3DOWNTO0));

ENDcount10;

ARCHITECTUREcountOFcount10IS

SIGNALq_temp:

STD_LOGIC_VECTOR(3DOWNTO0);

BEGIN

PROCESS(clk2,clear2)

BEGIN

IFclear2='

THENq_temp<

="

0000"

;

ELSIF(clk2'

eventANDclk2='

)THEN

IFq_temp="

1001"

THEN

q_temp<

ELSE

=q_temp+1;

ENDIF;

ENDPROCESS;

q<

=q_temp;

ENDcount;

useIEEE.STD_LOGIC_UNSIGNED.ALL;

USEIEEE.STD_LOGIC_ARITH.ALL;

ENTITYseg7IS

PORT(a:

INSTD_LOGIC_VECTOR(3DOWNTO0);

b:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

cat1:

OUTSTD_LOGIC_VECTOR(5DOWNTO0)

);

ENDseg7;

ARCHITECTUREshowOFseg7IS

BEGIN

PROCESS(a)

CASEaIS

WHEN"

=>

b<

1111110"

0001"

0110000"

0010"

1101101"

0011"

1111001"

0100"

0110011"

0101"

1011011"

0110"

1011111"

0111"

1110000"

1000"

1111111"

1111011"

WHENOTHERS=>

B<

0000000"

ENDCASE;

cat1<

111011"

ENDshow;

LIBRARYIEEE;

entityjishuqi8421is

port(clk,clear:

cout:

OUTSTD_LOGIC_VECTOR(6DOWNTO0);

cat:

);

endjishuqi8421;

architecturejiofjishuqi8421is

componentdiv25m

endcomponent;

componentcount10

componentseg7

signalc:

std_logic;

signald:

std_logic_vector(3downto0);

u1:

divportmap(clk1=>

clk,clk_out=>

c);

u2:

count10portmap(clk2=>

c,clear2=>

clear,q=>

d);

u3:

seg7portmap(a=>

d,b=>

cout,cat1=>

cat);

endji;

(由于实际使用的50000000分频不方便仿真,仿真时使用12分频)

每隔12个时钟信号计数器的值会增加1,直到计数器的值为9时,再次返回0计数。

端口说明及连接图:

输入端口:

clk:

输入时钟信号。

clear:

输入复位信号。

输出端口:

cat[5]-cat[0]:

控制哪个数码管亮。

cout[6]-cout[0]:

控制数码管的哪一部分亮。

实验四:

用VHDL实现相关电路

(1)实验名称:

用VHDL语言设计并实现六个数码管串行扫描电路

要求同时显示0,1,2,3,4,5这6个不同的数字图形到6个数码管上,仿真验证其功能,并下载到实验板测试。

VHDL代码:

libraryieee;

useieee.std_logic_1164.all;

useieee.std_logic_unsigned.all;

entityshumakongzhiis

port(clk_in:

outstd_logic_vector(5downto0);

a_out:

outstd_logic_vector(6downto0));

endshumakongzhi;

architectureaofshumakongzhiis

signaltmp:

std_logic_vector(6downto0);

signalcnt:

integerrange0to599;

signalcat_tmp:

std_logic_vector(5downto0);

process(clk_in)

begin

if(clk_in'

eventandclk_in='

)then

ifcnt=99then

cat_tmp<

011111"

cnt<

elsifcnt=199then

101111"

elsifcnt=299then

110111"

elsifcnt=399then

elsifcnt=499then

111101"

elsifcnt=599then

111110"

elsecnt<

endif;

casecat_tmpis

when"

tmp<

whenothers=>

endcase;

cat<

=cat_tmp;

a_out<

=tmp;

enda;

cat[i]为0时,第i个数码管亮。

仿真时使cat[5]-cat[0]依次为0且每次只有一个为0。

cat[5]为0时显示0,cat[4]为0时显示1,cat[3]为0时显示2,cat[2]为0时显示3,cat[1]为0时显示4,cat[1]为0时显示5。

当扫描频率足够大时,就可以看到六个数码显示管同时显示,从左到右依次为012345。

输入:

clk_in:

输出:

cat[5]-cat[0]:

a_out[6]-a_out[0]:

用VHDL语言设计并实现六个数码管滚动显示电路

向左滚动,用全灭的数码管填充右边直至全部变灭,然后再依次从右边一个一个地点亮。

状态为:

0012345->

12345X->

2345XX->

345XXX->

45XXXX->

5XXXXX->

XXXXXX->

XXXXX0->

XXXX01->

XXX012->

XX0123->

X01234->

012345。

ENTITYshumasaomiao3IS

PORT(CLK:

SG:

BT:

OUTSTD_LOGIC_VECTOR(5DOWNTO0));

ENDshumasaomiao3;

ARCHITECTUREACEOFshumasaomiao3IS

componentfen2k

instd_logic;

clk_out:

outstd_logic);

endcomponent;

SIGNALCNT6:

INTEGERRANGE0TO11;

SIGNALA:

SIGNALCOUNT:

INTEGERRANGE0TO4999:

=0;

SIGNAlFLAG:

INTEGERRANGE0TO12:

SIGNAlFLAG_A:

SIGNALclk_tmp:

STD_LOGIC;

u1:

fen2kportmap(clk_in=>

CLK,clk_out=>

clk_tmp);

P1:

process(CNT6)

CASECNT6IS

WHEN0=>

BT<

="

;

A<

=0;

WHEN1=>

=1;

WHEN2=>

=2;

WHEN3=>

=3;

WHEN4=>

=4;

WHEN5=>

=5;

WHEN6=>

111111"

=6;

WHEN7=>

=7;

WHEN8=>

=8;

WHEN9=>

=9;

WHEN10=>

=10;

WHEN11=>

=11;

WHENOTHERS=>

NULL;

ENDCASE;

ENDPROCESSP1;

P2:

process(clk_tmp)

IFclk_tmp'

EVENTANDclk_tmp='

ifCNT6=11then

CNT6<

else

=CNT6+1;

IF(FLAG=12)THEN

FLAG<

IFCOUNT=4999THEN

COUNT<

=FLAG+1;

ELSE

=COUNT+1;

ENDIF;

ENDPROCESSP2;

P3:

process(A,FLAG,FLAG_A)

BEGIN

FLAG_A<

=((A+FLAG)mod12);

CASEFLAG_AIS

WHEN0=>

SG<

WHEN1=>

WHEN2=>

WHEN3=>

WHEN4=>

WHEN5=>

WHEN6=>

WHEN7=>

WHEN8=>

WHEN9=>

WHEN10=>

WHEN11=>

NULL;

ENDPROCESSP3;

ENDACE;

仿真波形图的分析:

由波形可见,随着大计数周期的增加,依次产生0012345-12345X-2345XX-345XXX-45XXXX-5XXXXX-XXXXXX-XXXXX0-XXXX01-XXX012-XX0123-X01234-012345,这样便实现了循环移位。

clk:

BT[5]-BT[0]:

控制哪个数码管亮。

SG[6]-SG[0]:

控制数码管的哪一部分亮。

二,故障及问题分析:

1.代码反复报错,其逻辑语句在分析后并未出错,可能是文件头出错或分号忘写,注意检查自己VHDL语言的规范性。

2.仿真波形不出现,可能是文件名错误;

时钟周期设置错误;

文件未编译;

clear有效电平设计错误。

若问题无法解决,则考虑自己的电路设计逻辑是否出错。

3.电路下载到实验板后不能正常工作,首先检查仿真波形,检查实验板的时钟状态,检查程序无误后,检查管脚连接是否出错。

4.出现冒险:

尝试消除,有时候无法消除。

三,总结和结论:

1.实验前应测试实验板所需部件能否正常工作,保证实验的顺利进行。

2.上课前做好预习,上课时认真听讲,不遗漏老师的建议,课后及时复习掌握。

3.课前查阅相关资料,对实验的惯例和常识有更多的了解。

方便自己根据实验需要来进行模块的搭建或程序的编写。

4.应规范VHDL语言的使用习惯,变量名清晰明了,程序层次分明,一目了然,尽量避免冒险的出现,写程序时细心细致,避免出现低级错误,根据软件下方错误提示进行查错。

5.进一步掌握QuartusII,做好仿真,并学会分析仿真结果的正确性,实验前应先明确步骤,查好资料,确定思路,加以实现。

6.在电路出现问题时,要耐心细心的去寻找,去排查,去测试,查阅书籍,尝试解决。

若遇到自己无法解决的问题,及时与同学讨论或询问老师。

7.收获:

通过本次实验,对于数字电路与逻辑设计实验有了初步的了解,与课本上的内容对照,加深了对知识的理解,提高了自己的动手能力。

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

当前位置:首页 > 总结汇报 > 学习总结

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2