东南大学电工电子实验中心实验报告课程名称:数字逻辑电路实践第六次实验实验名称:可编程数字系统设计基础院(系):专业:姓名:学号:实验室:104实验组别:同组人员:实验时间:2011年1月3日评定成绩:审阅教师:设计课题:健身自行车控制器。一、基础部分(70%)设计一个健身房使用的健身自行车控制器。它包含二种工作模式:“手动”、“计时”。控制器的输出信号给一个8位D/A转换器,以控制自行车的阻力(改变训练强度),“0x00”为无阻力,“0xFF”为最大阻力。6位数码管的高2位显示阻力值,低四位显示时间。1.当使用者刚骑上自行车时,控制器处于初始状态。按“F”键启动控制器。2.使用者从键盘输入1或2以选择“手动”、“计时”模式,按“E”键确认。3.如果使用者输入“1”(手动模式),显示器显示“9”,用户可以输入从0到9中的任意数字,以改变训练强度,按“E”键确认。训练强度选择完成之后,按下“F”按钮开始训练。此时显示器在高2位显示阻力值。4.如果使用者输入“2”(计时模式),控制器将提示用户输入从0到9中的任意数字,以选择需要的训练强度,按“E”键确认。训练强度选择完成之后,显示器显示“00:00”。通过数字键盘输入数字,以决定训练的时间,输入时数字顺序是从左到右。例如,输入1、0、2、3应该在显示器上上显示“10:23”,表示训练时间被设定为10分23秒,如果输入正确,按下“E”键确认。如果使用者输错了时间,可以按“C”清除,显示恢复00的状态。训练时间输入完成后,按下“开始”开始训练。此时6位数码管的高2位显示阻力值,低四位倒计时显示时间一直到“00:00”。在最后3秒时,蜂鸣器响3下,规律为响半秒停半秒。当计时到00:00时,控制器恢复到初始状态,此时定时器是“00:00”,阻力为前面设定的值。二、扩展部分(30%)1.每次按下正确的按键,LED亮一下,这可以提示使用者按钮是否成功按下。2.在计时模式下,如果输入的时间大于“60:00”或小于“01:00”,在按下“E”键确认后,显示器显示EE,同时LED亮1秒,然后显示返回00的状态。(10%)3.增加动态调整训练强度功能,在训练过程中按“上”或“下”按钮,实时增加或减少训练强度。(10%)4.计时模式提供预设模式功能,可存储10种训练模式(训练强度和时间预先设定好),设定过程如下:(10%)1)在基本功能2中,输入A,选择“自定义”模式,显示“0”,直接按下“E”键,表示选择“0”号预置训练模式,此时显示该模式的训练强度和训练时间。也可用键盘输入“0”到“9”中的任何数字选择相应预置训练模式,按“E”确认,此时显示该模式的训练强度和训练时间。选择完成后按“开始”按钮开始训练。2)在基本功能2中,输入B,选择“自定义”模式,显示“0”,用键盘输入“0”到“9”中的任何数字选择要设置的预置训练模式,按下“预设”按钮,显示该模式原来预置的训练强度值,参考基本功能3,重设预置训练强度,按“E”确认,显示器显示该模式原来预置的训练时间值,参考基本功能3,重设训练时间,按下“E”键确认,再按下“预设”按钮存储预设值,回到基本功能初始状态。1.设计过程1.1实现功能:本实验的实现功能要求完成健身自行车的相关逻辑功能,按照要求,可大致分为以下几个部分:a.键盘电路;b.递减计时器c.状态机;d.控制电路;e.显示电路部分。1.键盘设计:键盘的主要实现方式是行列分别加高电平和1110-1101-1011-0111-1110的扫描信号,由于键盘上拉电阻的存在,当某键按下时会有一行(列)信号被拉为低电平,此时产生一个信号使扫描停止。将该信号通过一个D触发器以消除杂波。通过ROM将行列信号译为个键值。本题中由于数字键用于置数和数码管的显示,而字母键主要用于功能操作,所以给每个字母键单独分配一个输出信号。ROM转换真值表:VCCpin_name12INPUTVCCclock1INPUTVCCrow0INPUTVCCrow1INPUTVCCrow2INPUTVCCrow3INPUTrow[3..0]OUTPUTcol[3..0]OUTPUTcol0OUTPUTcol1OUTPUTcol2OUTPUTcol3OUTPUTSHIFTREG.SLSISRSIBCCLKCLRNDS1S0AQAQBQCQD74194instCOUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst1COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst2DFLIP-FLOPS2D2PRN1CLK1D1PRN2CLK2CLRN1CLRN1QN2Q2QN1Q7474inst37410inst4VCCGNDGNDVCCVCC7420inst17VCC7404inst21row0row2row3col0col1col2col3row162.状态机其核心是状态的循环以及控制电路部分,控制部分可以通过输入的键盘信号以及状态输产生反馈信号,来控制计时器的工作、显示电路的运转以及状态机的循环。仅考虑基础要求部分的模式,经分析可作出状态转换图如下:启动进入模式选择0001训练开始0101初始状态0000时间第二位1000强度确认0100强度输入0011选择手动模式0010时间第三位1001时间最低位1010选择计时模式0110时间最高位0111时间确认1011训练并倒数计时1100F键120~9键非EE键F键0~5键0~9键0~5键0~9键E键F键非ECC0~9键最后倒计时结束后回到初始状态,图中未能画出。状态机设计图:3.分频器设计的分频器用于产生不同频率的时钟信号,满足蜂鸣器计数端、计数器、阻力调节这些不同的时钟脉冲信号,设计输入1000hz的TTL信号,经分频器电路产生10,100和1000倍率的频率缩放。分频器电路如下:4.控制电路:主要控制状态的循环以及显示、计时等模块的使能信号,以控制各个模块之间的工作,使得能够同时使得各个模块同时运转工作或只有部分运作其余模块保持现有状态知道下一个使能信号来临,主控电路设计如下:DECODERCDBAG1NG2NO0NO12NO15NO10NO11NO1NO13NO14NO4NO3NO2NO7NO6NO5NO9NO8N74154instCOUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst3COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst4COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst57404inst303:8DECODERABG1CG2ANG2BNY0NY1NY2NY3NY4NY5NY6NY7N74138inst507404inst557404inst567404inst577404inst58ggi0i1i2i3va0b0c0d0dfgvqbqaeclr0clk2vclk0vclk1cq0q1q2q3a1b1c1d1ggabclr0q5q7q4q6clr0vqcVCCCLK1000HzINPUTCLK1HzOUTPUTCLK10HzOUTPUTCLK100HzOUTPUTCOUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161instCOUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst7COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst87400inst117400inst127400inst13VCCVCCVCCVCCGNDGNDGNDDFLIP-FLOPS2D2PRN1CLK1D1PRN2CLK2CLRN1CLRN1QN2Q2QN1Q7474inst227404inst237404inst247404inst25VCCclkINPUTVCCclkramINPUTVCCclk2INPUTVCCin[3..0]INPUTVCCi4INPUTVCCi5INPUTVCCstate[7..0]INPUTtemp[3..0]OUTPUTtestOUTPUTentest[3..0]OUTPUTzeroOUTPUTrangOUTPUTt[23..16]OUTPUTyt[15..0]OUTPUTin[15..0]outputbijiaoinst27COUNTERCLRNCLKENPLDNADENTBCQDQCQBQARCO74161inst1stat[7..0]ENclr1clr1inst47404inst67404inst77404inst87404inst9OR2inst557404inst56AND2inst59AND2inst60AND2inst61OR2inst627404inst6301239198ld60oc0oa0ob0od0choose1inst2BCDCOUNTERLDNACBDGNCLKDNUPQAQBQDQCMXMNRCON74190inst64BCDCOUNTERLDNACBDGNCLKDNUPQAQBQDQCMXMNRCON74190inst65BCDCOUNTERLDNACBDGNCLKDNUPQAQBQDQCMXMNRCON74190inst66BCDCOUNTERLDNACBDGNCLKDNUPQAQBQDQCMXMNRCON74190inst67AND2inst70AND2inst72AND2inst73OR3inst74AND2inst75AND2inst76AND2inst77AND2inst78a[3..0]b[3..0]pin_name8out0out1out2out31in4inst12a[3..0]b[3..0]pin_name8out0out1out2out31in4inst13a[3..0]b[3..0]pin_name8out0out1out2out31in4inst17a[3..0]b[3..0]pin_name8out0out1out2out31in4inst18a[3..0]b[3..0]pin_name8out0out1out2out31in4inst19a[3..0]b[3..0]pin_name8out0out1out2out31in4inst207404inst217404inst22AND4inst10OR2inst23VCCGNDAND2inst28AND2inst29OR2inst30state[7..0]numclkwrenwreninst68AND4inst157404inst267404inst32i[3..0]clrinen[3..0]clkoutput[15..0]tempinst57temp[3..0]state[7..0]rightclki[3..0]clrad[3..0]out[23..16]addinst11state[7..0]clkenclkenableinst33AND8inst35AND2inst377404inst387404inst397404inst407404inst417404inst427404inst437404inst447404inst45AND8inst367404inst467404inst477404inst487404inst497404inst507404inst517404inst527404inst537404inst54AND3inst58t[15..0]clkrangranginst69AND2inst71AND2inst79OR2inst807404inst837404inst84AND4inst857404inst87AND4inst88AND2inst89AND2inst90OR2inst917404inst92in[15..0]outputbijiaoinst93AND2inst94AND2inst95AND2ins