一、 目的
1. 掌握cpld全双工异步通信接口设计
2. 掌握计算机异步通信接口设计
二、 仪器
1. Pc机一台
2. Max+plusii cpld开发系统一套
3. Cplddn—3 型下载软件一套
4. Cpldee—3 型实验开发系统一套
三、 要求
1. 用硬件描述语言设计全双工的异步串行口。
2. 用计算机进行异步通信的程序设计。
四、 内容及步骤
1. 硬件电路设计
2. 利用ahdl (或者vhdl)语言进行全双工异步通信口设计,具体内容如下:
(1) cpld利用接收接口电路接收计算机发来的地址(或数据),进行译码并显示,
(2) cpld将接收到的地址与本机地址相比较如果相符,则将输入端口的8位数据通过发送端口送给计算机。
(3) cpld全双工通信的ahdl 程序已经写好了。
(4) 管脚分配、编译、下载。(注:本实验适用2、4型实验箱)
3. 计算机软件设计
(1) 该通信软件采用Visual Basic6.0 设计,其中“发送指令”—TEXT1,“瞬时数据”—TEXT2,“接收次数”—TEXT3,“接收时间”—TEXT4,“波特率”—TEXT5 。
(2) 界面设计样图如下:
在附件中,请查看.
(4)软件参考程序如下:
Private Sub com1_Click()
mscomm1.CommPort = 1
form1.com1.Checked = True
form1.com2.Checked = False
End Sub
Private Sub com2_Click()
mscomm1.CommPort = 2
form1.com2.Checked = True
form1.com1.Checked = False
End Sub
Private Sub command1_click()
Text3.Text = 0
Text4.Text = 0
Dim mms(0) As Byte
mms(0) = Val(Text1.Text)
Dim buffer As Variant
Dim arr() As Byte
'设定并打开端口
If mscomm1.portopen = True Then
mscomm1.portopen = True
End If
mscomm1.output = mms
Do
DoEvents
Loop Until mscomm1.outbuffercount = 0
For Y = 0 To 11
For X = 0 To 26
If i = 252 Then
i = 0
Else
i = i + 1
End If
'设定inputmode读去二进制数据
mscomm1.inputmode = cominputmodebinary
'等待直到输入缓冲去有10个字节
Do Until mscomm1.inbuffercount > = 255
If mscomm1.inbuffercount <> 0 Then
timer1.Enabled = True
End If
DoEvents
Loop
'往缓冲区存二进制数据
buffer = mscomm1.input
'赋值于字节数组以便处理
arr = buffer
Text2.Text = arr(i)
Text3.Text = Text3.Text + 255
For t = 0 To 254
If arr(t) < 128 Then
mt = 8 * (255 - arr(t))
Else
mt = 8 * arr(t)
End If
Picture1.PSet ((t * 2 + 254 * 2 * X + 100), (mt + Y * 800 - 1000)), QBColor(Y Mod 6 + 9)
Next
Next
Next
mscomm1.portopen = False
timer1.Enabled = False
MsgBox "ok"
End Sub
Private Sub command2_click()
Picture1.Cls
End Sub
Private Sub form_load()
Text1.Text = "&h33"
Text4.Text = 0
Text5.Text = 0
form1.com1.Checked = False
form1.com2.Checked = False
End Sub
Private Sub timer1_timer()
Text4.Text = Text4.Text + 0.1
Text5.Text = (Text3.Text * 10 / 8) / (Text4.Text)
End Sub
五、 要求
利用vhdl语言设计cpld全双工通信程序。