在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 18949|回复: 10

[求助] vivado 中调用uart—lite IP核与PC串口通信问题

[复制链接]
发表于 2015-10-2 22:28:50 | 显示全部楼层 |阅读模式
200资产
本人需要把FPGA fifo中的数据传给PC,在vivado中uart-lite的IP核是AXI总线的接口形式,以前没接触过这种总线形式,搞了很久还是不能正常发送数据,不知道版上有没有哪位大神用过uart-lite这个IP核,能否指导一下,或者发我一份Verilog测试uart-lite核的代码看看?感激不尽

 楼主| 发表于 2015-10-8 10:09:21 | 显示全部楼层
没人用过这个IP核吗:
发表于 2015-10-8 19:28:54 | 显示全部楼层
axi总线倒是用过,有三种形式,常用来传输数据的那种我用过,不过这个ip核倒是没有用过。成7系列开始,Xilinx就开始统一其总线为AXI总线,针对该总线的具体问题我试着回答你。
发表于 2015-10-8 19:34:34 | 显示全部楼层
其中最关键的就是slave的rdy信号和master的valid信号之间的配合,valid为1表示,master总线上的数据是有效的,rdy为1表示slave已经读取了总线上的数据,此时master必须立即更新总线上的数据,如果没有有效的数据去更新,就立即将valid置为0,这个是配合的关键。谨记rdy信号和valid信号在处理时一定不能寄存,否则会出现数据不同步的。
 楼主| 发表于 2015-10-8 19:52:16 | 显示全部楼层
回复 4# justfigo
多谢回复!,下面这个是核的接口,左边的是AXI的总线    QQ图片20151008194630.png
下面这个是例化时接的信号,因为只做发射,就是把fifo里面的数据通过串口发到电脑上,所以接收的信号都是悬空的。但是把数据写进串口内部待发射的buffer中时有问题,因为仿真时产生tx的时序不对,应该是通过AXI协议写入数据时出错了?
  axi_uartlite_0 myuart (
        .s_axi_aclk(s_axi_aclk),        // input wire s_axi_aclk
        .s_axi_aresetn(s_axi_aresetn),  // input wire s_axi_aresetn
        .interrupt( ),          // output wire interrupt
        .s_axi_awaddr(s_axi_awaddr),    // input wire [3 : 0] s_axi_awaddr
        .s_axi_awvalid(s_axi_awvalid),  // input wire s_axi_awvalid
        .s_axi_awready( ),  // output wire s_axi_awready
        .s_axi_wdata(s_axi_wdata_i),      // input wire [31 : 0] s_axi_wdata
        .s_axi_wstrb( ),      // input wire [3 : 0] s_axi_wstrb
        .s_axi_wvalid(s_axi_wvalid),    // input wire s_axi_wvalid
        .s_axi_wready( ),    // output wire s_axi_wready
        .s_axi_bresp( ),      // output wire [1 : 0] s_axi_bresp
        .s_axi_bvalid( ),    // output wire s_axi_bvalid
        .s_axi_bready( ),    // input wire s_axi_bready
        .s_axi_araddr( ),    // input wire [3 : 0] s_axi_araddr
        .s_axi_arvalid( ),  // input wire s_axi_arvalid
        .s_axi_arready( ),  // output wire s_axi_arready
        .s_axi_rdata( ),      // output wire [31 : 0] s_axi_rdata
        .s_axi_rresp( ),      // output wire [1 : 0] s_axi_rresp
        .s_axi_rvalid( ),    // output wire s_axi_rvalid
        .s_axi_rready( ),    // input wire s_axi_rready
        .rx( ),                        // input wire rx
        .tx(sdo)                        // output wire tx
      );
 楼主| 发表于 2015-10-8 20:00:43 | 显示全部楼层
回复 4# justfigo
请问你说的rdy是这两个信号吗.s_axi_awready( ),  // output wire s_axi_awready
                                       .s_axi_wready( ),    // output wire s_axi_wready
我这两个信号都没有使用,因为是输出信号,感觉影响不大吧
发表于 2015-10-8 20:11:16 | 显示全部楼层
回复 6# naijgnay

你这个应该是全功能型的那种,比较复杂,我用过的是简化的版本。ISE在例化的ip核的时候,会在对应的文件夹下面生产example文件夹,你可以在例化的ip核的目录下面找找,里面应该有实例,你可以参考一下。
 楼主| 发表于 2015-10-8 21:05:05 | 显示全部楼层
回复 7# justfigo
生成的example design是VHDL语言写的,看不懂
发表于 2015-10-9 19:45:48 | 显示全部楼层
回复 8# naijgnay


   个人感觉两种都要会的,其实你对比对比真的差不多,只是形式有点不同而已
发表于 2016-1-17 08:20:39 | 显示全部楼层
了解了解
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-12-23 07:05 , Processed in 0.022706 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表