FUSION系列FPGA有32个通道,现有2种通信协议:一是指定哪个通道发送数据就哪个通道发送,二是按通道的顺序循环发送数据,发送的间隔为100MS。要做的事情是先用VB做一个界面,然后编程实现上面的协议,请求高手相助~!

解决方案 »

  1.   

    这些其实我也不很懂啊,之前我都没接触过VB,只学习了C语言。老师和我说的就只是按上面的那两种方式进行数据传输,该怎么编呢?
      

  2.   

    你须先查找FUSION系列FPGA的通信协议资料。
      

  3.   

    Private Sub Send_Click()
    Dim s As Integer
    s = Text1.Text
    comm.Output = "s"
      delay
    Redata$ = comm.Input
    End SubPrivate Sub Send_group_Click()
    Dim i As Integer
    Dim s As Integer
    For i = 1 To 30 Step 1
      s = s + i
    Next i
    comm.Output = "s"
       delay
    Redata$ = comm.Input
    End Sub这个事COM端口向FPGA发送命令的代码,程序是我按意思写的,应该是不正确的。COM端口OUTPUT属性是不能直接发送十进制数据的,好像应该先转换成二进制发送字符数据,这个转换该怎么写?第二个问题,就是DELAY的延时程序,这个程序该怎么调用?第三个问题是,发送出去命令,接收的程序代码应该怎么写,像上面的Redata$ = comm.Input这个事我看了网上资料搞的,应该是错的吧! 问题太多了,对于我这个新手真的很麻烦,希望大家帮助,谢谢!
      

  4.   

    第一个问题,按Byte(字节)流发送2进制数据。
    第二个问题,用Timer控件控制发送间隔。
    Option Explicit
        Dim bytSj(0) As Byte
        Dim i As Integer
    Private Sub Command1_Click()
        Timer1.Enabled = True
    End SubPrivate Sub Form_Load()
        MSComm1.CommPort = 1
        MSComm1.Settings = "9600,n,8,1"
        MSComm1.PortOpen = True
        Timer1.Enabled = False
        Timer1.Interval = 100
    End SubPrivate Sub Timer1_Timer()
        i = i + 1
        If i = 1 Then
            bytSj(0) = &H80
            MSComm1.Output = bytSj
        ElseIf i = 2 Then
            bytSj(0) = &H88
            MSComm1.Output = bytSj
        ElseIf i >= 3 Then
            bytSj(0) = &H8
            MSComm1.Output = bytSj
            i = i - 3        
            Timer1.Enabled = False
        End If
    End Sub
      

  5.   

    能问下&H80  &H88   &H8
    这些是什么意思不呢
     
      

  6.   

    &H80  
    &H88  
    &H8 
    VB中16进制数的表示法
    &H80即10进制128
    &H88即10进制136
    &H8 即10进制8
      

  7.   

    那我要求是通道1到30,VB这边用什么指令表示每个通道,别且把指令发送到FPGA那边,还有怎么把数据接收回来呢?
      

  8.   

    VB这边用什么指令表示每个通道需要你的通信协议!
    你须先查找FUSION系列FPGA的通信协议资料!
    具体的通信协议内容是啥?总不见得别人给你写协议,写数据约定.
      

  9.   

    Actel Fusion系列器件是业界首款也是唯一具有模拟功能的Flash架构的FPGA,融合了FPGA数字内核、A/D转换器、Flash存储器、模拟的I/O、RTC等数字和模拟器件。Fusion器件内部具有2~8 Mbit不等的用户可用Flash存储器和30通道、最高12位精度、最高600 Ks/s采样率的A/D转换器,片内100 MHz的RC振荡器与PLL(锁相环)一起共同为FPGA提供时钟,以节省外部时钟的开销。这些特点极大地提高了该系列FPGA器件的功能,简化了系统设计,大幅度减少了电路板面积和系统总成本。当Fusion系列FPGA器件结合8051,CortexMl,ARM7等软件MCU核时,还可以实现真正的SoC系统。Actel Fusion系列FPGA器件是迄今为止最全面的单芯片模拟与数字可编程逻辑系统的解决方案。
    我想FPGA他本身应该没有什么通信协议,这个通信协议应该就是我们用的COM端口的通信协议。硬件那边30个通道是直接用十进制数1到30表示的,我现在的问题是我这边怎么把通道的命令发送到FPGA那边与他那边相对应,以便FPGA响应后将相应的通道数据发送到VB显示界面上。VB串口通信用MSComm控件,问题是该控件发送和接受数据是以什么格式的,就是说怎么样将数据发送过去和接受回来。
      

  10.   

    朋友,您能将您的QQ和我说吗?我想直接用QQ和您交流,可能对我更有帮助些。
      

  11.   

    那你用个串口调试软件直接发送&H1-&H1E的任一指令给Actel Fusion系列器件,看看它有啥应答。
      

  12.   


    实际上,Actel Fusion 与 PC 的通讯协议应该是通过烧入到 FPGA 中的逻辑确定的。片内逻辑接收到 PC 的指令,从指定的通道取 A/D 转换数据,然后发送给 PC。所以最简单的协议就是 PC 发送 1 - 30 (&H01 - &H1E) 到 FPGA 指定通道。指令 0 可以用作测试命令或其他。在烧入正确综合后的硬件逻辑之前,你给 FPGA 发什么都没有用。
      

  13.   

    楼上说的很正确,这方面硬件的同学他已经搞好了,他只要将程序下载到FPGA芯片上就可以了
      

  14.   

    不过是不是16进制的指令发过去  FPGA那边也应该把通道1到30用16进制表示才能认得?还是这边16进制发过去到那边10进制的也能认得呢?