完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
让我总结一下:
你不懂C 你是FPGA的新手 你想用FPGA设计SoC并用C编程嵌入式处理器 你看了几行示例C代码,但这对你没有帮助 好吧,DUH! 你认为你可以通过观看电影中的飞行员来学习如何降落飞机吗? 学习C 为您的桌面处理器写C! 了解FPGA 编写FPGA代码! 只有这样你才能开始考虑你的项目。 阿德里安 请在询问之前先查询您的问题。如果有人回答您的问题,请在“接受为解决方案”标记该帖子。 如果你看到一个特别好的和信息丰富的帖子,考虑给它Kudos(左边的星)。 |
|
|
|
好吧,事实上我表现得有点谦虚,我有自己的cpu设计,我在我的开发套件上使用了LCD,点亮了LED,DIP开关,按钮。
我的下一个目标是通过rs232命令软cpu。 我甚至使用matlab - simulink xilinx工具箱来开发一些直流电机控制的东西,并针对我的开发板它至少为“初学者”工作得很好。 所以,我雄心勃勃地想要了解更多。 我欢迎那些能够分享他们的知识而不是傲慢的建议的人给出的答案。 问候... |
|
|
|
如果我的帖子听起来很傲慢,我很抱歉。
问题是,你不会相信有多少人来到这里没有关于FPGA的线索,并且在没有尝试简单的东西的情况下询问如何做复杂的事情。 谦虚是一个很好的性格特征,但如果你把自己卖得很有价值,那么你就不会得到适合你知识水平的答案。 但是,我的回复的本质仍然是:你不能从代码示例中学习C,如果你想使用嵌入式CPU,你真的应该学习C语言。 有大量的教科书和/或在线资源可以教你C语言,这真的值得付出努力。 还有一条建议:要求样本代码在这里有一个耻辱,因为有这么多人回避挖掘手册本身,而是要求其他人做他们的工作。 阿德里安 请在询问之前先查询您的问题。如果有人回答您的问题,请在“接受为解决方案”标记该帖子。 如果你看到一个特别好的和信息丰富的帖子,考虑给它Kudos(左边的星)。 |
|
|
|
我解决了自己的问题,并在下面写了代码。
它在我的XUPV5板上运行。 问题是当我在“XUartLite_RecvByte”函数中编写“XPAR_UARTLITE_0_BASEADDR”时,我的程序无效,我真的好奇为什么? 当我写“XPAR_RS232_UART_1_BASEADDR”而不是uart基地址程序功能完美无缺。 有没有办法在EDK或SDK中查看哪个设备正确使用了哪个参数? 如果有人想看看rs232如何在RX和TX方向上工作,我认为下面的代码将是一个很好的凝视点.... / ******************* ************************************************** ********* / #包括#包括 “platform.h” 的#include “xparameters.h” 的#include “xbasic_types.h” 的#include “xgpio.h” 的#include “xstatus.h” 的#include “xtmrctr.h” 的#include“xuartlite.h “#include”xuartlite_l.h“#include”xil_exception.h“/ **************************常量定义****** ************************* / int LED_number [] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80}; / **************************变量定义********************** ********* / XUartLite UartLite; / * UartLite设备的实例* / XGpio Gpio8bitsLED; / * Gpio8bitsLED * / XTmrCtr TmrCtr的实例; / *定时器/计数器的实例* // **************************功能原型*********** ********************* / void delay_us(Xuint32时间); / ******************** ************************************************** *******//* 主功能/************************************* ***************************************** / int main(){int status; //初始化UART状态= XUartLite_Initialize(& UartLite,XPAR_UARTLITE_0_DEVICE_ID); if(status!= XST_SUCCESS){xil_printf(“UART初始化失败。 r n”); 返回XST_FAILURE; } //执行自检以确保硬件正确构建。 status = XUartLite_SelfTest(& UartLite); if(status!= XST_SUCCESS){xil_printf(“UART无法自检。 r n”); 返回XST_FAILURE; } //初始化计时器。 status = XTmrCtr_Initialize(& TmrCtr,XPAR_XPS_TIMER_0_DEVICE_ID); if(status!= XST_SUCCESS){xil_printf(“Timer无法初始化。 r n”); 返回XST_FAILURE; } //设置计时器选项。 XTmrCtr_SetOptions(& TmrCtr,1,XTC_DOWN_COUNT_OPTION); //初始化GPIO 8位LED。 status = XGpio_Initialize(& Gpio8bitsLED,XPAR_LEDS_8BIT_DEVICE_ID); if(status!= XST_SUCCESS){xil_printf(“GPIO初始化失败。 r n”); 返回XST_FAILURE; } //将所有8位LED设置为输出。 XGpio_SetDataDirection(& Gpio8bitsLED,1,0,000); //显示菜单。 xil_printf( “%C [2J”,27); 打印(“ n r - 请选择你的愿望 - n r”); 打印(“1 - 连续打开和关闭LED 2 n r”); 打印(“2 - 连续打开和关闭LED 4 n r”); 打印(“3 - 连续打开和关闭LED 6 n r”); print(“4 - 从0到7逐个打开LED n r”); 打印(“5 - 一次打开LED从7到0一次 n r”); //无限循环u8 RS232Recv; U8 N; while(1){RS232Recv = XUartLite_RecvByte(XPAR_RS232_UART_1_BASEADDR); switch(RS232Recv){case 0x31:xil_printf(“你选择了:%x。 n r”,RS232Recv-0x30); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x00); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x04); 打破; case 0x32:xil_printf(“你选择了:%x。 n r”,RS232Recv-0x30); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x00); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x10); 打破; case 0x33:xil_printf(“你选择了:%x。 n r”,RS232Recv-0x30); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x00); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x40); 打破; case 0x34:xil_printf(“你选择了:%x。 n r”,RS232Recv-0x30); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x00); 为(N = 0; N XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,LED_number [N]); delay_us(100);}操作break; case 0x35:xil_printf( “你选择:%X n r”,RS232Recv- 的0x30); XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,0x00);对于(N = 8; N> 0; --n){XGpio_DiscreteWrite(安培; Gpio8bitsLED,1,LED_number [N-1]); delay_us(100); } break;默认值:xil_printf(“超出范围! n r”,RS232Recv-0x30); XGpio_DiscreteWrite(& Gpio8bitsLED,1,0x00); break;}} return 0;} //函数声明/ *** ************************************************** ************************ // *延时功能:/ ****************** ************************************************** ********* /空delay_us(Xuint32时间){XTmrCtr_SetResetValue(安培; TmrCtr,1,时间* 125000); XTmrCtr_Start(安培; TmrCtr,1);而((XTmrCtr_IsExpired(安培;!TmrCtr,1 ))){} XTmrCtr_Stop(& TmrCtr,1);} |
|
|
|
只有小组成员才能发言,加入小组>>
2384 浏览 7 评论
2800 浏览 4 评论
Spartan 3-AN时钟和VHDL让ISE合成时出现错误该怎么办?
2264 浏览 9 评论
3336 浏览 0 评论
如何在RTL或xilinx spartan fpga的约束文件中插入1.56ns延迟缓冲区?
2431 浏览 15 评论
有输入,但是LVDS_25的FPGA内部接收不到数据,为什么?
759浏览 1评论
请问vc707的电源线是如何连接的,我这边可能出现了缺失元件的情况导致无法供电
548浏览 1评论
求一块XILINX开发板KC705,VC707,KC105和KCU1500
371浏览 1评论
1966浏览 0评论
685浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-25 16:50 , Processed in 1.431361 second(s), Total 85, Slave 68 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号