微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 通过上位机的UART控制我verilog程序

通过上位机的UART控制我verilog程序

时间:10-02 整理:3721RD 点击:
问题是这样的:我想在上位机界面上输入1到10的数字通过UART控制我输出不同的状态
比如:
      case(rx)
   32'h1:  state = 4'b0000;
   32'h2:   state = 4'b0001;
   .....
疑问是:FPGA程序定义rx是一位的,而我上位机输入的是32位数据,这里面是怎么个转换关系?
我如何通过rx判断输出我的状态?
有点乱,麻烦知道的人解答一下,谢谢了!

去看下rs232的数据规则,在看看你的Uart怎么实现的,你就应该懂了。

不是很理解你说的“上位机输入的是32位数据”是啥意思...你上位机应该是PC上的软件程序吧..如果软件程序也是你写的,那就是接口位宽问题了...
从你的描述不能确定问题所在.....
从你的程序看,你rx不是就定义的32位么?那不是正好说明你上位机发出就是32位?
反正从上位机信号到电路信号,这个接口位宽都是你定义的....

原先的串口程序定义了rx是一位的接收,但是发送的数据按32位,然后返回到我上位机界面也是32位,这个调试成功了
现在想通过串口控制我内部的状态,是不是要增加rx位宽比如:
  case(rx)
   32'h1:  state = 4'b0000;
   32'h2:   state = 4'b0001
但是串口传输是一位一位传输,我现在是如何判断我接收的数据(比如数据:2,3这些数字)?

没有太理解你的问题
上位机是上位机,FPGA是FPGA,都是你设计的,这中间你加一个接口模块就可以了吧
上位机通过UART发来的数据经过接口模块编码成一个状态码,FGPA的模块再根据这个状态码对应输出一个状态就完了,至于前面上位机给多少位数据,什么格式这些,接口模块根据你自己的规则编码给一个状态码给rx就行了吧

   你现在是没有理解UART的时序问题.....你接收到的你所谓的“32位”是什么意思...既然你都知道串口是1bit 1bit的传的,那你还不能找到你想要的数据么?
你看看串口是多少针....比32大么?
如果不是,那不是说明你这个32不是一个周期传过来的?
.....
........
...........
你还是再理解一下UART吧.....

小编的注册日期跟问题不成正比

呃…LZ这个rx不是已经定义为32bit了么…LZ你想问什么?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top