zedboard 串口的PL怎么做串口读写

ZedBoard(5)
【原文链接】:
PL端GPIO控制,利用zed上的8个开关去控制8个led灯的亮灭,利用btn8和btn9两个PS按键控制Demo的开始和结束,并通过LD9显示程序是否开始。
VIVADO工程如图1所示,用两个AXI_GPIO IP核分别连接LED和SW,工程建立全部使用自动连接。
硬件设计图如下:
自动生成的约束文件:
SDK创建完毕后:
连接串口和JTAG,运行程序,点击btn8开始Demo,LD9灯两,尝试拨动开关,看看led灯的反应,点击btn9结束Demo,LD9灯灭。
extern char inbyte(void);
extern XGpioPs_Config XGpioPs_ConfigTable[XPAR_XGPIOPS_NUM_INSTANCES];
int main()
static XGpioPs psGpioInstanceP
XGpioPs_Config*GpioConfigP
static XGpio GPIOInstance_Ptr0;
static XGpio GPIOInstance_Ptr1;
int xStatus0,xStatus1,xStatus,start,
int iPinNumberld9 = 7;
int iPinNumberbtn8 = 50;
int iPinNumberbtn9 = 51;
init_platform();
print("##### Application Starts #####\n\r");
print("\r\n");
xStatus0 = XGpio_Initialize(&GPIOInstance_Ptr0,XPAR_AXI_GPIO_0_DEVICE_ID);
if(XST_SUCCESS != xStatus0)
print("GPIO INIT FAILED\n\r");
xStatus1 = XGpio_Initialize(&GPIOInstance_Ptr1,XPAR_AXI_GPIO_1_DEVICE_ID);
if(XST_SUCCESS != xStatus1)
print("GPIO INIT FAILED\n\r");
XGpio_SetDataDirection(&GPIOInstance_Ptr0, 1,0x00);
XGpio_SetDataDirection(&GPIOInstance_Ptr1, 1,0xff);
GpioConfigPtr = XGpioPs_LookupConfig(XPAR_PS7_GPIO_0_DEVICE_ID);
if(GpioConfigPtr == NULL)
return XST_FAILURE;
xStatus = XGpioPs_CfgInitialize(&psGpioInstancePtr,
GpioConfigPtr,
GpioConfigPtr-&BaseAddr);
if(XST_SUCCESS != xStatus)
print(" PS GPIO INIT FAILED \n\r");
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberld9,1);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberld9,1);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberbtn8,0);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberbtn8,1);
XGpioPs_SetDirectionPin(&psGpioInstancePtr, iPinNumberbtn9,0);
XGpioPs_SetOutputEnablePin(&psGpioInstancePtr, iPinNumberbtn9,1);
while (1){
start=XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberbtn8);
if(start){
XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberld9,1);
print("###################### Demo Starts ########################\r\n");
end=XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberbtn9);
XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberld9,0);
XGpio_DiscreteWrite(&GPIOInstance_Ptr0,1,0x00);break;
Readstatus = XGpio_DiscreteRead(&GPIOInstance_Ptr1, 1) ;
XGpio_DiscreteWrite(&GPIOInstance_Ptr0,1,Readstatus);
end=XGpioPs_ReadPin(&psGpioInstancePtr, iPinNumberbtn9);
XGpioPs_WritePin(&psGpioInstancePtr,iPinNumberld9,0);
XGpio_DiscreteWrite(&GPIOInstance_Ptr0,1,0x00);break;
print("\r\n");
print("***********\r\n");
print("BYE \r\n");
print("***********\r\n");
cleanup_platform();
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:48856次
排名:千里之外
原创:37篇
转载:22篇
(6)(12)(2)(2)(2)(6)(8)(7)(4)(1)(1)(7)ZedBoard双串口硬件实现2 - 美信DIY设计大赛讨论区 - OpenHW技术社区
后使用快捷导航没有帐号?
扫一扫,访问微社区
查看: 2724|回复: 5
ZedBoard双串口硬件实现2
主题帖子积分
初级会员, 积分 74, 距离下一级还需 126 积分
初级会员, 积分 74, 距离下一级还需 126 积分
ZedBoard双串口硬件实现2
上期说到使用ZYNQ-7000 AP SoC(以下简称Zynq)的MIO引出信号做串口扩展。这期我们继续就双串口的实现进行讲解。
作为含有FPGA逻辑的Zynq芯片,把串口从PS端引脚引出仅为其冰山一角,Zynq的外设接口包括UART、SPI、CAN、SD、I2C等都可以通过EMIO从PS引到PL。本期抛砖引玉,把UART通过EMIO引出到FPGA,然后通过FPGA配置逻辑引出到ZedBoard的Pmod接口。
从下图的串口输出路线配置图可见另外一种配置方式。
图1.jpg (86.26 KB, 下载次数: 1)
09:54 上传
通过EMIO把串口外设信号从PS引出到PL十分方便快捷,并且在之后的使用做也灵活的很。举例来说,就像上一期一样把信号线通过PL的UCF配置到PL引脚以实现UART的模块信号接出。本期就是实现上述这种使用方式。
对于ZedBoard开发板,上面接出的PL引脚有Pmod接口4个,FMC接口1个。其中Pmod接口包括差分对信号接口JC、JD,如下图红色框部分,一般接口信号JA、JB,绿色框部分,FMC接口,黄色框部分。
图2.JPG (162.71 KB, 下载次数: 4)
09:54 上传
我们使用上图中的JA进行UART的扩展。
首先直接进行UART引脚接口输出配置,在XPS中的图形化界面中进行配置。点击IO Perlpherals进行外设引脚的配置,配置图如下所示。
图3.jpg (209.19 KB, 下载次数: 1)
09:55 上传
设置完成之后,进入Ports选项卡,点击processing_system7_0前面加好展开其信号接口,找到(IO_IF)UART_0并设置成信号接出到引脚选项。如下图所示。
图4.JPG (25.37 KB, 下载次数: 1)
09:55 上传
设置完成之后可以在该选项卡的最上端External Ports栏中找到配置好的外部引脚,并能看到外部引脚的名称。如下图所示。
图5.jpg (22.91 KB, 下载次数: 1)
09:55 上传
可见串口信号信号名称为processing_system7_0_UART0_RX_pin,processing_system7_0_UART0_TX_pin。
关闭XPS,在PlanAhead软件中进行UCF的编写配置,把UART映射到Pmod接口JA上。
主题帖子积分
初级会员, 积分 74, 距离下一级还需 126 积分
初级会员, 积分 74, 距离下一级还需 126 积分
回复:ZedBoard双串口硬件实现2
查找ZedBoard的典型应用电路原理图,找到JA3、JA4所对应的PL引脚编号Y10、AA9。使用UCF文件限定引脚位置即可。
图6.JPG (40.52 KB, 下载次数: 1)
09:57 上传
图7.JPG (43.23 KB, 下载次数: 1)
09:57 上传
UCF文件如下图。
图8.JPG (72.4 KB, 下载次数: 1)
09:57 上传
设定好之后,生成bit文件并导出到SDK中,在调试双串口之前配置好FPGA即可从Pmod的JA口获得UART0的信号。
主题帖子积分
新手上路, 积分 0, 距离下一级还需 50 积分
新手上路, 积分 0, 距离下一级还需 50 积分
回复:ZedBoard双串口硬件实现2
那么B4 C5 JE3 JE4分别是什么意思和pl上的AA9,Y10有什么关系呢?
主题帖子积分
新手上路, 积分 6, 距离下一级还需 44 积分
新手上路, 积分 6, 距离下一级还需 44 积分
回复:ZedBoard双串口硬件实现2
回复第 3 楼 于 14:57:37发表:
那么B4 C5 JE3 JE4分别是什么意思和pl上的AA9,Y10有什么关系呢?
B4连JE3,C5连JE4,AA9连JA4,是独立的几个pin
主题帖子积分
新手上路, 积分 6, 距离下一级还需 44 积分
新手上路, 积分 6, 距离下一级还需 44 积分
回复:ZedBoard双串口硬件实现2
回复第 3 楼 于 14:57:37发表:
那么B4 C5 JE3 JE4分别是什么意思和pl上的AA9,Y10有什么关系呢?
主题帖子积分
新手上路, 积分 15, 距离下一级还需 35 积分
新手上路, 积分 15, 距离下一级还需 35 积分
回复:ZedBoard双串口硬件实现2
联系电话: 3-8069
Powered by&>&&>&&>&&>&vivado+zedboard之纯PL开发基本流程
vivado+zedboard之纯PL开发基本流程
上传大小:683KB
vivado+zedboard之纯PL(FPGA)开发基本流程
综合评分:4.5(4位用户评分)
所需积分:1
下载次数:43
审核通过送C币
创建者:bensnake
创建者:zhangguo5
创建者:zhangguo5
课程推荐相关知识库
上传者其他资源上传者专辑
开发技术热门标签
VIP会员动态
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
android服务器底层网络模块的设计方法
所需积分:0
剩余积分:720
您当前C币:0
可兑换下载积分:0
兑换下载分:
兑换失败,您当前C币不够,请先充值C币
消耗C币:0
你当前的下载分为234。
vivado+zedboard之纯PL开发基本流程
会员到期时间:
剩余下载次数:
你还不是VIP会员
开通VIP会员权限,免积分下载
你下载资源过于频繁,请输入验证码
您因违反CSDN下载频道规则而被锁定帐户,如有疑问,请联络:!
若举报审核通过,可奖励20下载分
被举报人:
smilencezq
举报的资源分:
请选择类型
资源无法下载
资源无法使用
标题与实际内容不符
含有危害国家安全内容
含有反动色情等内容
含广告内容
版权问题,侵犯个人或公司的版权
*详细原因:& 相关文章 &
zedboard--zynq使用自带外设IP让ARM PS访问FPGA(八)
参考超群天晴的博客链接地址,使用XPS为PS 处理系统 添加额外的IP。从IP Catalog 标签添加GPIO,并与ZedBoard板子上的8个LED灯相连。当系统建立完后,产生bitstream,并对外设进行测试。以后还有一个很重要的自定义用户Ipcore设计,下个实验来做下这个(一开始以简单的led和sw为例)。这个实验就使用呢自带外设IP。 使用的平台是XPS 14.2+SDK 14.2 一 硬件配置 1、启动xps创建工程Create New Project Using
zedboard的GPIO实验
开发环境:xps14.6+sdk14.6 上次博客说了GPIO的使用,这次就来实践一下。 本实验使用MIO7(zedboard板上的LD9),两位EMIO,两位axi gpio的IP核,分别接到LED上,点亮LED,主要练习GPIO的使用方法。 一:硬件配置 1.
启动xps14.6,创建工程Create New Project Using BaseSystem Builder 2.
创建工程。因为PS系统和FPGA连接是采用AXI接口,因而选择内部互联类型
zedboard的demo评测
LED(LD12)变亮说明配置完成。 从SD读取SSBL,开始Uboot过程(启动Linux),启动过程中VGA输出了一个Demo演示图像。 串口监视程序会显示Linux启动过程(需要上电前打开putty窗口),启动完成后,板上OLED会显示一个Digilent demo图像。 Putty监视窗口如下,可以看到Linux系统已经启动了文件系统、telent终端、HTTP、FTP、SSH服务以及开始了OLED显示,而且Zedboard的网口IP固定为了192.168.1.10。 Linux系统启动后
Zedboard之Hello World(ISE14.6)
核当做一个子系统添加进来) 6、选择Create Sub-Design 7、之后会Lanch XPS来配置子系统。在开始时候会弹出如下窗口,点击OK就行。 8、为了简化对PS的预配置,点击IMPORT,选择提供的Zedboard Template配置文件,由图可以看到Zynq的PS已经根据Zedboard的Demo程序配置好了PS。 9、为了对比EMIO,点击System Assembly View下的IO Perlpherals,添加4个EMIO 10、利用GPIO IP核 11、添加完成后
zedboard的裸机中断实验(一)
学习了zynq的中断系统后,这里做一个简单的中断实验,第一个中断的实验是一个简单的按键中断实验。 开发环境:XPS14.6+SDK14.6 一:硬件配置 1.
启动xps,创建工程,选择好平台。 2.移除外设
3.进入工程,已经配置好了(PlanAhead的话好像是不是自动配置好的)
注:建议自己手动添加一次zedboard配置文件,我这前面没添加后面不行,后面添加后就可以了。
GPIO的IP核,注意这里勾上GPIO
,从Quad-SPI FLASH启动和从SD卡启动。
从Quad-SPI FLASH启动 板载SPI FLASH中预置了一个非常简单的程序,SPI-FLASH启动过程可以分为: 上电后,片上ROM程序执行,初始化后判断从SPI FLASH启动。 从SPI FLASH拷贝FSBL到片上RAM执行 FSBL执行,处理器从SPIFLASH读取比特流(bitstream)配置Zynq的PL部分 PL配置完成后执行,点亮LED 首先要MODE跳线选择在SPI FLASH启动模式,接通Zedboard
Zedboard自定义AXI总线IP详解(多图)
HelloWorld.c文件,首先将之前系统生成的IP驱动文件拖进SDK工程中 之后会发现.h文件报错,这里是由于工程无法找到xbasic_types头文件 28、在下图位置,添加Include文件路径,重新编译 29、在添加进来的H文件中可以看到,系统帮你封装好的AXI总线函数 这里的BaseAddress可以在xml文件中看到 30、修改Helloworld文件,为了功能测试,代码有点简单 31、下载位流
32、修改Debug Configuration,一般默认就行,如果用到printf函数可以设置STDIO Connection 在Run As。。。中Run 33、这样开发板中SW和LED就搞上了。然后,就没有然后了。ENJOY IT。
zedboard--用户自定义IP核(pwm发生器)设计(二十)
1:实验说明: 对于Zedboard的用户自定义的IP核有两种可行的方案: 一:通过EMIO交换数据(GPIO,SPI),这个其实就是将PL的IP核看作系统的外设,在数据交互性能和效率上都有很大的缺陷。(不常用) 二:利用向导来制作满足AXI协议的IP核,向导自动生成总线相关的代码,做好地址译码逻辑,读写控制逻辑,并在用户工作区生成一些寄存器。我们写的PL逻辑通过读写这些寄存器和PS交互。这也是常用的方法。 Zedboard也有一些自己做好了的IP core,实验八就是用的自带的IP core
:///article/p-310493.html
这里前提是xps生成了bit流文件后,并导入到sdk中,然后再应用软件中操作该axigpio,上述博客已经实现了,这里就是总结一下这样的axi gpio我们如果来操作。
这里的端口名称为LED,有8位。
在软件中,要做这些工作:
staticXGpio LED_P//定义GPIO指针 int XS//函数返回状态 XStatus =XGpio_Initialize
Zedboard上的NTShell移植 以及 双串口软件测试
Zedboard上的NTShell移植 参见 链接地址 Zedboard上的双串口软件测试 参见 链接地址 如果访问存在问题,请在hosts文件中添加 211.100.26.50 www.openhw.org 211.100.26.50
如何更改hosts请百度 ,或者参看链接地址
ZedBoard板终于到了。。。。
苦等一星期,终于从e-element购买了Zedboard,顺丰快递,板子好像是从上海Digilent寄过来的,花了3、4天的样子到广州。 说多无谓,等会上个高清无码图。 附带了一个Vivado的安装盘,还给了个License哦! 那个八卦形辟邪去耦电容,不可谓不霸气啊! 板子套件包括: ● Avnet ZedBoard 7020 开发板 ● 12 V AC/DC电源 ● 4 GB SD卡 ● Micro-USB延长线 ● USB适配器: USB Micro-B母口转USB A型公口 ● 入门指导手册 ● 带有ChipScope许可证的ISE(R) WebPACK(TM)软件套件光盘 ● 还有本《嵌入式系统软硬件协同设计实战指南:基于Xilinx Zynq》附送。
一个典型的基于ARM的SOC结构: 从图可以得知,这个soc的基本构成为: ARM Core:ARM966E AMBA总线:AHB + APB 外设IP:VIC、DMA、UART、RTC、SSP、WDT... Stroage Device:SRAM、FLASH 模拟IC:ADC、PLL、CODEC 1 我们该选择何种内核? ARM提出的参考意见如下: 如果开发适时嵌入式系统,如汽车电子、工控、网络应用,选择Embedded core。 如果开发应用程序为主并且要使用操作系统,如Linux
终究还是要面对嵌入式系统的移植的!!!本文是陆书在自己电脑上的实现。 关于zedboard的系统开发(这里不考虑zedboard裸奔的情况了)可能会遇到下面的问题: 转载:请注明来之链接地址 &一&使用提供的Demo系统来进行应用程序和驱动程序的开发 应用程序开发: 需要安装交叉编译环境,另外要用到Opencv或者qt的话,在板子上要移植,这些都在前面的实验上已经做好了。 驱动程序开发: 这里主要是为自定义的ip核(PL)编写linux驱动的问题,包括两个问题,一是在pc下运行该驱动程序,一是
三种常用SoC片上总线的分析与比较
灵活性是Wishbone总线的另一个优点 由于IP核种类多样,其间并没有一种统一的间接方式 为满足不同系统的需要,Wishbone总线提供了四种不同的IP核互连方式: ·点到点(point-to-point),用于两IP核直接互连; ·数据流(data flow),用于多个串行IP核之间的数据并发传输; ·共享总线(shared bus),多个IP核共享一条总线; ·交叉开关(crossbar switch)(图2),同时连接多个主从部件,提高系统吞吐量 还有一种片外连接方式,可以
The System Clock Control logic in S3C6410X generates the required system clock signals, ARMCLK for CPU, HCLK for AXI/AHB-bus peripherals, and PCLK for the APB bus peripherals.
There are three PLLs in S3C6410X.
One is for ARMCLK only.
zedboard--终于搞定了zedboard的ftp(二十四)
终于搞定了zedboard的ftp和使用telnet来控制开发板了。同时,虚拟机下也成功了。 转载请注明:xzyfeixiang的zedboard的专栏/article/p-310524.html 1:ftp的使用,不能老用U盘来拷贝一些东西,希望使用ftp来传送一些东西。 ftp:busybox自带的FTP服务器,Zedboard的demo系统已经开启了Ftp的进程可以用 ps -ef|grep ftp来查看
最近自己忙一些开题之类的蛋疼的事情,zedboard歇了一段时间,是时候回来了。
有个大学玩的比较好的哥们问我ip地址192.168.1.1和ip地址为192.168.2.1能ping通吗?我竟然说到不能,我真是傻叉了,忘记了有子网掩码这回事了,下面在zedboard试验一下。
pc机ip地址为202.38.214.214,子网掩码(netmask为255.255.255.0),zedboard默认的ip192.168.1.10,子网掩码为
就不算是懂ARM硬件!)总线上设备提供工作时钟;EPLL为特殊外设,例如:视频解码器,图片解码器等,提供工作时钟。 2、然后就是三种工作时钟的产生了(AXI、AHB和APB) ARM1176最高产生667MHz的工作频率。用户可以通过设置内部时钟分频器的值来控制输出工作时钟,而不需要修改PLL的工作频率。分频器可以选择1-16的分频数。再来看一张图片:
S3C6410内部通过AXI、AHB以及APB三种不同的总线,来控制不同的外设,关闭总线上的时钟频率可以达到系统节能的目的(用过ATMEGA
, LED_HARDWARE_MODULE_ID, (struct hw_device_t**)device); step3. 通过继承 hw_device_t 的 callback(回调函数)来控制设备。 sLedDevice-&set_on( sLedDevice, led);
sLedDevice-&set_off( sLedDevice, led);
2、编写 HAL stub 的方法 编写 HAL stub 的基本流程如下所示。
step1. 自定义 HAL 结构体,编写头文件 led.h
安装pc,zedboard上和测试
a)qt显示一张照片在linux测试程序所用的时间那篇博客里面。 8)软件的开机自动加载,这个是ramdisk的文件系统,必须要这么做。 9)别人的智慧就是强大,可以qt显示视频了。 10)pc机下helloworld驱动
a)了解驱动和系统调用过程 11)运行在demo系统下的helloworld驱动 12)测试pwm的ip核,其实就是简单的ps+pl(jtag调试) 13)搭建嵌入式web服务器 boa 14)嵌入式网络摄像机
& 2012 - 2016 &
&All Rights Reserved. &
/*爱悠闲图+*/
var cpro_id = "u1888441";&&&&频道:| |
zedboard 中SDK 修改串口设置(波特率。。。。)
zedboard 中SDK 修改串口设置(波特率。。。。)
其实在zedboard SDK中不用初始化串口的也就是platform()可以不写 ,初始化在EDK导入SDK中就写好了 具体看bsp文件夹下面的汇编。但是如果我们想要在SDK中改变串口设置的话,那么就必须在main中
时间: 04:48 来源:网络整理 作者:Ioter 点击:次
其实在zedboard
SDK中不用初始化串口的也就是platform()可以不写 ,初始化在EDK导入SDK中就写好了
具体看bsp文件夹下面的汇编。但是如果我们想要在SDK中改变串口设置的话,那么就必须在main中添加下面函数
init_uart()
#ifdef DOUT_IS_PS7_UART
/* Use the PS UART for Zynq devices */
XUartPs Uart_Ps_0;
XUartPs_Config *Config_0 = XUartPs_LookupConfig(UART_DEVICE_ID);
XUartPs_CfgInitialize(&Uart_Ps_0, Config_0, Config_0->BaseAddress);
XUartPs_SetBaudRate(&Uart_Ps_0, UART_BAUD);
#elif defined(STDOUT_IS_16550)
XUartNs550_SetBaud(STDOUT_BASEADDR, XPAR_XUARTNS550_CLOCK_HZ, UART_BAUD);
XUartNs550_SetLineControlReg(STDOUT_BASEADDR, XUN_LCR_8_DATA_TS);
(责任编辑:ioter)
本文链接:
http://www./IC/embedded/96.html
声明:物联网在线转载作品均尽可能注明出处,该作品所有人的一切权利均不因本站转载而转移。作者如不同意转载,即请予以删除或改正。转载的作品可能在标题或内容上或许有所改动。
TopeWay Business Media
Copyright (C) 2011 . 本网站所有内容均受版权保护。
未经版权所有人明确的书面许可,不得以任何方式或媒体翻印或转载本网站的部分或全部内容。}

我要回帖

更多关于 pl读写ddr 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信