北邮数电实验简易数字电压表报告Word格式.docx
- 文档编号:21654688
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:210.27KB
北邮数电实验简易数字电压表报告Word格式.docx
《北邮数电实验简易数字电压表报告Word格式.docx》由会员分享,可在线阅读,更多相关《北邮数电实验简易数字电压表报告Word格式.docx(18页珍藏版)》请在冰豆网上搜索。
若CS仍保持为低电平,则在随后的时钟周期中,Dout将以最低有效位在前的格式重复输出转换后的数据,其中第2次重复输出的最低有效位不再出现(与前一输出周期的最低有效位重叠),当最高有效位(B11位)重新出现后,Dout呈三态,以后的时钟序列对ADS7816不产生影响,仅当CS由高变为低后,ADS7816才启动下一个新的转换。
ADS7816的工作时序图
(2)BCD转码设计
8位数字量BD0~BD7转换成3位BCD码用FPGA实现乘除法是很耗资源的,并且实现起来非常麻烦,所以小组通过讨论跟商量后,觉得利用加法来实现更加方便。
表中将8位数字量分为高4位HB和低4位LB,这样每个4位码的编程都是从0000~1111的16组码,由于5V被8位二进制码最大值除得到的结果是0.02v,即数字量每增大1对应模拟电压增大0.02v。
16进制
二进制
高四位
低四位
0000
0.00
1
0001
0.32
0.02
2
0010
0.64
0.04
3
0011
0.96
0.06
4
0100
1.28
0.08
5
0101
1.60
0.10
6
0110
1.92
0.12
7
0111
2.24
0.14
8
1000
2.56
0.16
9
1001
2.88
0.18
A
1010
3.20
0.20
B
1011
3.52
0.22
C
1100
3.84
0.24
D
1101
4.16
0.26
E
1110
4.48
0.28
F
1111
4.80
0.30
将二进制加法运算的结果修正为BCD码加法运算的结果,两个两位BCD数相加时,对二进制加法运算结果采用修正规则进行修正。
修正规则:
a.如果任何两个对应位BCD数相加的结果向高一位无进位,若得到的结果小于或等于9,则该不需修正;
若得到的结果大于9且小于16时,该位进行加6修正。
b.如果任何两个对应位BCD数相加的结果向高一位有进位时(即结果大于或等于16),该位进行加6修正。
c.低位修正结果使高位大于9时,高位进行加6修正。
(3)VHDL代码
libraryieee;
useieee.std_logic_1164.all;
useieee.std_logic_unsigned.all;
entityzhuanhuanis
port(b_datain:
instd_logic_vector(11downto0);
b_dataout:
outstd_logic_vector(11downto0));
endzhuanhuan;
architecturetwoofzhuanhuanis
signalmiddata:
std_logic_vector(11downto0);
signalvdata:
signalhdata:
signalldata:
signalc0:
std_logic;
signalc1:
signalc2:
begin
middata<
=b_datain;
hdata<
="
010010000000"
whenmiddata(11downto8)="
1111"
else—4.80
"
010001001000"
1110"
else—4.48
010000010110"
1101"
else—4.16
001110000100"
1100"
else—3.84
001101010010"
1011"
else—3.52
001100100000"
1010"
else—3.20
001010001000"
1001"
else—2.88
001001010110"
1000"
else—2.56
001000100100"
0111"
else—2.24
000110010010"
0110"
else—1.92
000101100000"
0101"
else—1.60
000100101000"
0100"
else—1.28
000010010110"
0011"
else—0.96
000001100100"
0010"
else—0.64
000000110010"
0001"
else—0.32
000000000000"
;
--0.00
ldata<
000000110000"
whenmiddata(7downto4)="
else—0.30
000000101000"
else—0.28
000000100100"
else—0.26
000000100010"
else—0.24
else—0.22
000000100000"
else—0.20
else—0.18
000000010110"
else—0.16
000000010100"
else—0.14
000000010010"
else—0.12
000000010000"
else—0.10
000000001000"
else—0.08
000000000110"
else--0.06
000000000100"
else—0.04
000000000010"
else—0.02
c0<
='
1'
whenhdata(3downto0)+ldata(3downto0)>
"
01001"
else'
0'
c1<
whenhdata(7downto4)+ldata(7downto4)>
c2<
whenhdata(11downto8)+ldata(11downto8)>
vdata(3downto0)<
=hdata(3downto0)+ldata(3downto0)+"
whenc0='
else
hdata(3downto0)+ldata(3downto0);
--BCD加法(0-3)
vdata(7downto4)<
=hdata(7downto4)+ldata(7downto4)+"
whenc1='
andc0='
hdata(7downto4)+ldata(7downto4)+"
else
hdata(7downto4)+ldata(7downto4);
--BCD加法(4-7)
vdata(11downto8)<
=hdata(11downto8)+ldata(11downto8)+"
whenc2='
andc1='
hdata(11downto8)+ldata(11downto8)+"
hdata(11downto8)+ldata(11downto8);
--BCD加法(8-11)
b_dataout<
=vdata;
endtwo;
(4)实验仿真及分析
b_datain:
输入,b_dataout:
输出。
图中datain“11011110”,“1101”对应的电压值位4.16v,其对应的BCD编码为“010000010110”,“1110”对应的电压值为0.28v,其对应的BCD编码为“000000101000”。
低4位相加为“1110”,大于9,加6将其调整为BCD码,其值为0100,并且向前有一进位。
四位相加的结果为0011,由于低位有进位,因此最终结果为0100,。
高四位的结果为0100.三位合计值为4.44v,与4.16+0.28的结果一样
2、数码管显示模块
(1)VHDL代码
--LED显示
useieee.std_logic_arith.all;
entityledis
port(bcdcode:
clk:
instd_logic;
seg:
outstd_logic_vector(6downto0);
led_88:
outstd_logic;
cat:
outstd_logic_vector(5downto0));
endled;
architectureoneofledis
signalnum:
std_logic_vector(3downto0);
signalcount:
std_logic_vector(1downto0);
signaltmp:
integerrange0to124;
signalclktmp:
p1:
process(clk)--分频
begin
ifclk'
eventandclk='
then
iftmp=124then
tmp<
=0;
clktmp<
=notclktmp;
=tmp+1;
endif;
endprocessp1;
p2:
process(clktmp)
begin
ifclktmp'
eventandclktmp='
thencount<
=count+1;
endprocessp2;
num<
=bcdcode(3downto0)whencount=0
bcdcode(7downto4)whencount=1
bcdcode(11downto8)whencount=2
0000"
cat<
111110"
whencount=0else
111101"
whencount=1else
111011"
whencount=2else
111111"
--数码管显示定义
led_88<
'
seg<
0111111"
whennum="
else--0
0000110"
else--1
1011011"
else--2
1001111"
else--3
1100110"
else--4
1101101"
else--5
1111101"
else--6
0000111"
else--7
1111111"
else--8
1101111"
else--9
1110111"
else--10
1111100"
else--11
0111001"
else--12
1011110"
else--13
1111001"
else--14
1110001"
else--15
0000000"
endone;
(2)实验仿真及分析
3、转换输出模块
entityshuchuis
port(cs:
a:
instd_logic;
clear:
cs_0:
clk_01:
q:
outstd_logic_vector(11downto0));
endshuchu;
architecturesxt_1ofshuchuis
signalcount_1:
integerrange0to13;
signalcount_2:
integerrange0to14;
signalcount_3:
integerrange0to25;
signaltemp_1:
signaltemp_2:
signaltemp_3:
integerrange0to249;
process(clear,clk)
ifclear='
elsifclk'
iftmp=249then
clk_01<
=clktmp;
process(a,cs,clktmp,clear)
ifcs='
andclear='
thencs_0<
cs_0<
endif;
ifcs='
then
temp_1<
count_1<
temp_2<
count_2<
temp_3<
count_3<
ifclear='
temp_1<
count_1<
elseifclktmp'
ifcount_1<
14
then
=temp_1(10downto0)&
a;
=count_1+1;
ifcount_2<
15
=temp_2(10downto0)&
count_2<
=count_2+1;
ifcount_3<
24
=a&
temp_3(11downto1);
count_3<
=count_3+1;
temp_2<
temp_3<
elseifclktmp'
thentemp_2<
elseif
clktmp'
if
count_3<
25
p3:
process(temp_1,temp_2,temp_3)
iftemp_1=temp_3thenq<
=temp_1;
elseq<
=temp_2;
endprocess;
endsxt_1;
4、报警模块
(1)实验要求
实验中AD参考电压为2.5V,即所测量电压超过2.5V时便要发起警报。
(2)VHDL代码
entitybaojingis
port(clk
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 北邮数电 实验 简易 数字 电压表 报告