cc1989summer

  • 2025-03-23
  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】⑤尝试通过SoftConsole启动RISC-V内核

    jobszheng5 发表于 2025-3-23 11:16 从去年就开始准备学习FPGA,结果到现在也没有成行。 唉 给自己定个小目标,一点点实现,加油,共勉

  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】简单uart的实现

    这是纯硬件时序模拟实现串口通讯啊:loveliness:

  • 2025-03-22
  • 发表了主题帖: 【microchip PolarFire SoC FPGA 套件】⑤尝试通过SoftConsole启动RISC-V内核

    本帖最后由 cc1989summer 于 2025-3-22 22:29 编辑   https://bbs.eeworld.com.cn/thread-1308660-1-1.html   书接上回。我们知道PolarFire SoC FPGA是分为2大块的,一块是FPGA,通过Libero SoC编程驱动,一块是RISC-V SOC,通过SoftConsole编程驱动。 FPGA与RISC-V SOC相互独立,通过总线联通。因此想要通过SW1(隶属于FPGA  BANK0)驱动LED8(隶属于RISC-V SOC BANK2)还是有点困难的。 RISC-V SOC核的详细介绍,可参考:PolarFire_SoC_FPGA_MSS_Technical_Reference_Manual_VC     顺着藤摸下去,怎么驱动这个RISC-V SOC核呢? 我咨询了microchip官方         这就不得不请蛋疼的Github出场,为啥说蛋疼呢,因为经常打不开。当然有时候可以打开。   https://github.com/polarfire-soc/polarfire-soc-discovery-kit-reference-design 这是我把该设计的附件下载下来了。       注意这个MPFS_DISCOVERY_KIT_REFERENCE_DESIGN.tcl,他是本文的关键。 这是该参考设计的架构图:     步骤一,在Libero中导入该参考设计。 Project——Execuie Script 需要注意一点:polarfire-soc-discovery-kit-reference-design-main文件夹需要尽量放置于靠近根目录的位置,比如 D:\Microchip\polarfire-soc-discovery-kit-reference-design-main 不可放置于桌面,文件路径过长会出错。             点击Run就可以了。 可以看到一个包括了RISC-V核在内的庞大体系。     Synthesize——constraints—— RUN PROGRAM Action后,就可以正常烧录了。 前面的步骤仅仅是对FPGA及SOC硬件线路进行了烧录。     要想驱动RISC-V SOC核,还需要使用Microchip的一大利器:SoftConsole   SoftConsole软件安装方法就不细说了。 安装好后,注意下载github (又是他) 裸机程序范例:polarfire-soc-bare-metal-examples         https://github.com/polarfire-soc/polarfire-soc-bare-metal-examples     官方只给出了下面3个例程。       1. 导入例程:         2:设置开发板型号           3.编译,下载调试:       4. 调试运行。   运行后,打开串口调试助手,共计3个串口,打开第2个。       每次按下SW2(SOC复位按钮)会出现如下画面:       随意发送一个字符,就开始系统自检测试。     依次进行 DDR Memory Test、SD Card Test、Ethernet(GEM) Test   具体程序细节还有待挖掘,先跑个代码试试是不!     本次分享就到这里。        

  • 2025-03-17
  • 加入了学习《直播回放: Microchip - 为什么选择FPGA,而非MCU?》,观看 为什么选择FPGA,而非MCU?

  • 2025-03-11
  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】④求助:如何通过FPGA驱动SoC GPIO?

    卿小小 发表于 2025-3-10 16:41 帖子内容质量很棒,对于您的问题做如下解答: 1.对于流水灯的功能来讲,驱动逻辑侧的7个LED已经够了; ... 谢谢您的细致指点,我再好好研究下,,第一次用microchip FPGA,尤其是包含SOC的FPGA,很多方面还不熟悉,网上资料也很少,这次争取搞明白了。:congratulate:

  • 2025-03-09
  • 发表了主题帖: 【microchip PolarFire SoC FPGA 套件】④求助:如何通过FPGA驱动SoC GPIO?

    https://bbs.eeworld.com.cn/thread-1307977-1-1.html 书接上回,通过Verilog语言运行了一个跑马灯的程序,遗憾的是8个LED只成功驱动了其中7个, 前面7个都属于FPGA直属的BANK0;而LED8挂载在Bank2(也就是属于SoC的GPIO)     通过常规的方式根本没有选不了BANK2 E1端口。     查阅官方说明文档,原来用到SOC的IO,需要通过PolarFireSoC MSS Configurator软件来设置。             如果想实现一个最简单的功能,通过按钮SW1控制LED8的亮灭。       SW1:BANK0 T19,直属于FPGA HSIO LED8:BANK2 E1(复用GPIO_1_9),直属于SOC(MSS) GPIO      查阅了官方资料:       PolarFireSoC MSS Configurator 设置如下:                       然后在Libero SoC v2024.2中导入刚才的MSS 设置,         最右边的逻辑块就是设置好的SOC。 其左侧有2个RESET GPIO_RESET_N_F2M:SOC GPIO的复位? MSS_RESET_N_F2M:SOC的复位?                 编译、设置管脚(GPIO_RESET_N_F2M设置为SW1 BANK0 T19,MSS_RESET_N_F2M_0设置为SW2 BANK0 U18),但烧录后仍无法控制GPIO_1_9 (LED8)亮灭。     困于以上问题,究竟如何通过FPGA驱动SoC GPIO呢?      

  • 2025-03-01
  • 发表了主题帖: 【microchip PolarFire SoC FPGA 套件】③艰难啃下基于verilog语言的跑马灯

    https://bbs.eeworld.com.cn/thread-1307592-1-1.html   书接上回,上次跑了一个基于官方的范例,也就是个最简单的 与门 电路。 也就是这样的:按下按键1或按键2,LED1灯亮。基本学习了如何编写程序及如何烧录。        有了初步的入门,那么怎么进一步编写自己的程序呢,看到开发板上8个LED陷入沉思,何不写个跑马灯的程序呢。   多方查资料学习,于是就有了如下的程序。   其中OSC_RC2MHZ_0是 Libero自带的时钟程序块(Macro Libray中)。     需要说明,把选中到OSC_RC2MHZ_0选中到电路图中,需要把左端脚上拉(Tie High)     cc03_0是我自编的基于verilog语言的程序,也是本文的重点。 首先新建一个 Creat HDL,选择verilog。       要实现跑马灯就需要比较精准的时钟,我们使用了2MHz的时钟源,每1个周期是(1/2,000,000 S )要想实现1秒钟计时,就需要数数到2,000,000 LED的跑马灯效果就是通过移位来实现,RST是复位功能。 比如 00000001 向左移位1位 00000010 再向左移位1位 00000100 再向左移位1位 00001000 再向左移位1位 00010000 再向左移位1位 00100000 再向左移位1位 01000000 再向左移位1位 10000000 等到最高位是1时就恢复到最初状态 00000001            程序如下: module cc03( clk,rst_n,led); input clk; input rst_n; output reg [6:0] led; reg [20:0] counter; //计数器 always@(posedge clk) if(!rst_n)//低电平复位 counter <= 0; else if(counter == 21'd1999999) //1秒 counter <= 0; else counter <= counter + 1'b1; always@(posedge clk) if(!rst_n) led <= 7'b0000001; else if(counter == 21'd1999998)begin if(led == 7'b1000000) led <= 7'b0000001; else led <= led << 1; end else led <= led; endmodule     眼睑的你可能看到了,我这里LED【6:0】怎么只有7个LED,待会会提。   verilog程序编写完,点击Check HDL File。如果程序有错会提示:         程序检查无误就点击 Build Hierarchy。       将刚才编写好的cc03.v程序拖到电路图中。 置顶对应引脚(rst_n,LED 6:0)   Synthesize通过后,设置好对应引脚。                 发现LED8对应的E1引脚无法选择,可能因为其是MSS(RISC-V核) I/O BANK的缘故,目前还没学会使用RISC-V核的IO,暂时就不用这个LED了。   最后编译下载程序就可以实现跑马灯效果了。         [localvideo]e113055628df4bc770aac3a940d70384[/localvideo]   本次分享就到这里。  

  • 2025-02-27
  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】②并不算一帆风顺的点灯之旅

    ccccccc@ 发表于 2025-2-27 14:38 这个板子还是很强大的,不过阅读英语比较吃力的话,可以试试ai(不过ai也会有些问题存在,比如乱回复,回答 ... 加油,攻克这个复杂板子 

  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】②并不算一帆风顺的点灯之旅

    dfjs 发表于 2025-2-27 00:25 请问一下你的中文文档在哪里找到的 都是通过Bing搜索到的pdf:victory:

  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】②并不算一帆风顺的点灯之旅

    wangerxian 发表于 2025-2-26 21:23 FPGA和单片机环境还是区别很大的。写代码也有不少区别,FPGA好多模块。 FPGA太复杂了,涉及复杂的协议、时序、IP软核,难度不是一般大。:time:

  • 2025-02-26
  • 发表了主题帖: 【microchip PolarFire SoC FPGA 套件】②并不算一帆风顺的点灯之旅

    https://bbs.eeworld.com.cn/thread-1306307-1-1.html#pid3395283       书接上回,在开箱之后更多的是熟悉microchip的官方文档,挺丰富的但几乎全英文,需要花时间仔细阅读。       本篇正式开始编程、烧写点灯程序。 主要参考文件为官方文档:PolarFire_SoC_Design_Flow_AN5282         上回说到。PolarFire SoC FPGA 主要包括SoC(五核Risc-V)和FPGA两部分,这两部分是相对独立、互相联系的。 SoC编程:使用SoftConsole   https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/soc-fpga/softconsole FPGA编程:使用Libero https://www.microchip.com/en-us/products/fpgas-and-plds/fpga-and-soc-design-tools/fpga/libero-software-later-versions 以下我下载的最新版本。     本篇为通过FPGA编程点灯,所以使用的是Libero。 需要说明Libero是要Lisence注册的,官方提供了免费的Lisence。 具体的安装、注册步骤详见以下帖子: https://blog.csdn.net/m0_51307090/article/details/121086742   首先新建项目:     选择型号封装等:   剩下的就是下一步的事了。   新建一个SmartDesign,放置一个与门(AND),对应3个引脚(A,B,Y)   – A - T19    按键SW1 – B - U18   按键SW2 – Y - T18   LED灯1           开发板电路图       接下来最重要的一步就是 Synthesize,然而在这步栽了跟头。 软件提示错误,并提示找不到synplify pro ME.       网上一查,原来是没安装这个软件,正常这个软件是Libero的一部分,原来是在安装Libero的时候没选择。 那就装上吧。把用得到的用不到的都装上。       安装完后需要设置下synplify软件的路径: 下面是我的安装目录。设置后就可以了。       Synthesize成功。   再接下来就是设置管脚。     最后一步就是把配置好的程序下载到开发板啦。       编译及下载过程稍稍漫长(约几分钟) 然后就可以看到程序运行了。按下任意按钮(SW1、SW2)LED1灯熄灭。   [localvideo]969fa0691af0394119192b5355549f08[/localvideo]     本次的分享就到这里。      

  • 2025-02-20
  • 回复了主题帖: 【microchip PolarFire SoC FPGA 套件】①热气腾腾的开箱

    学学学学学学学 发表于 2025-2-19 16:05 颜值很高 是的,做工很精细!

  • 2025-02-12
  • 发表了主题帖: 【microchip PolarFire SoC FPGA 套件】①热气腾腾的开箱

    本帖最后由 cc1989summer 于 2025-2-12 23:15 编辑 感谢EEWORLD及Digikey给我提供的这次microchip PolarFire SoC FPGA 套件测评及学习机会。 说起FPGA,大家更多的是接触Altera(被Intel收购)及Xilinx(被AMD收购)这两家,顶多再加一家Lattice。 microchip的FPGA在国内似乎比较小众,了解了下历史,原来是由一些列收购而来的。   Actel——>Microsemi——>microchip,而且一直主要偏向于军用和宇航。 Actel是美国军方的合作伙伴,占据了美国90%以上航天航空的FPGA市场,在过去的十多年中,Actel反熔丝的FPGA已经成功地应用于 300多个太空计划。 直到2002年,其创新的基于Flash架构的FPGA的出现,从此揭开了Actel神秘的面纱,从此Actel逐渐走向了民用市场,被大家所认知。          Microchip的三个主要FPGA系列: IGLOO®2 FPGA:具有大量资源的低密度器件。 SmartFusion®2 SoC FPGA:具有大量资源和32位硬处理器内核的低密度器件。 PolarFire™ FPGA 和 SoC FPGA:成本经过优化的高性能器件,并采用28纳米 (nm) 工艺技术实现。 本次测评的就是PolarFire™ SoC FPGA。   从名字中可知,集成了SoC(RISC V)和FPGA。        从架构图中可以看出,该FPGA集成了5核RISC-V SoC(625 MHz)和FPGA核心(93K LE逻辑单元),1LE=4LUT + DFF,性能非常强劲。   FPGA核部分的资源。        SoC核部分的资源        具体到板子,集成了丰富的硬件。包括1GB RAM,1000M以太网,SD卡等。   自带了JTAG调试工具。支持Bare-metal(裸机编程),RTOS以及Linux。           下面是开箱的内容,后面再慢慢学习应用开发。       本次分享就到这里。

  • 2025-02-06
  • 回复了主题帖: 测评入围名单: PolarFire SoC FPGA Discovery 套件

    感谢eeworld,确认可完成测评计划。{:1_138:}

  • 2025-01-18
  • 回复了主题帖: 【英飞凌PSOC™ 4100S Max】③Capsense触摸按钮初体验

    CoderX9527 发表于 2025-1-16 23:31 谢谢分享。 不仅分享了基础用例,还分享了触控调教,点赞。 嘿嘿,这就是所谓理论联系实际,我发现很多坛友发帖,有的只有案例,没有细讲背后的原理,有的干将理论死活不跑个实际案例,结果都是不太好的。

  • 2024-12-15
  • 回复了主题帖: 【英飞凌PSOC™ 4100S Max】③Capsense触摸按钮初体验

    Capsense触摸功能是业界第一的看门功夫,尽管瑞萨、德仪都有,但英飞凌仍独领风骚,自己顶一个先。

  • 加入了学习《Follow me第二季第3期 视频介绍》,观看 Follow me第二季第3期 任务提交

  • 回复了主题帖: 【英飞凌PSOC™ 4100S Max】⑥作品提交:电机触控及屏显系统

    lugl4313820 发表于 2024-12-14 08:32 看了一下,楼主的工具挺多呀,这转盘也是有个性哦!   顺带当作给自家小朋友的玩具(有多种不同类型的转盘,转起来效果各异)

  • 2024-12-13
  • 回复了主题帖: 【英飞凌PSOC™ 4100S Max】⑤SPI点亮TFT LCD屏幕

    TL-LED 发表于 2024-12-12 22:02 模拟SPI刷新速度有点慢,硬件SPI方式会好些。 是这样的,模拟SPI唯一的优点就是移植性非常好,拿过来任何一款MCU,能在几分钟内搞定显示,但要去吃透硬件SPI可没那么简单。

  • 2024-12-10
  • 发表了主题帖: 【英飞凌PSOC™ 4100S Max】⑥作品提交:电机触控及屏显系统

    结合前述分享,本篇提交作品:基于PSOC™ 4100S Max的电机触控及屏显系统。   基本架构如图:     其中: 触摸按钮用到了板载的 BTN0和BTN1触摸按钮 TFT-LCD使用基于SPI协议驱动的屏幕 电机驱动板使用基于L9110S芯片的直流电机驱动板,如下图:     电路如下图,MCU通过两个IO口(本例P8.0、P8.1)控制电机正反转。   控制逻辑如下图: IA=H;IB=0 正转 IA=0;IB=H 反转       配置好硬件,我们着手软件的编写:     main函数,主要进行初始化设置、IO设置,屏幕初始化、显示“Infineon”LOGO,然后进入循环。 int main(void) { cy_rslt_t result = CY_RSLT_SUCCESS; /* Initialize the device and board peripherals */ result = cybsp_init(); /* Board init failed. Stop program execution */ if (result != CY_RSLT_SUCCESS) { CY_ASSERT(CY_ASSERT_FAILED); } /* Enable global interrupts */ __enable_irq(); /* Initialize EZI2C */ initialize_capsense_tuner(); /* Initialize MSC CapSense */ initialize_capsense(); #if CY_CAPSENSE_BIST_EN /* Measure the self capacitance of sensor electrode using BIST */ measure_sensor_cp(); #endif /* CY_CAPSENSE_BIST_EN */ /* Start the first scan */ Cy_CapSense_ScanAllSlots(&cy_capsense_context); Cy_GPIO_Pin_FastInit(GPIO_PRT1,2u,CY_GPIO_DM_PULLDOWN,0,0); Cy_GPIO_Pin_FastInit(GPIO_PRT1,3u,CY_GPIO_DM_PULLDOWN,0,0); Cy_GPIO_Pin_FastInit(GPIO_PRT1,4u,CY_GPIO_DM_PULLDOWN,0,0); Cy_GPIO_Pin_FastInit(GPIO_PRT1,5u,CY_GPIO_DM_PULLDOWN,0,0); Cy_GPIO_Pin_FastInit(GPIO_PRT1,6u,CY_GPIO_DM_PULLDOWN,0,0); Lcd_Init(); //初始化LCD delayms(10); //延时一段时间 Lcd_Clear(black ); Show_RGB(0,0,176,44,blue); Show_RGB(0,44,176,88,green); Show_RGB(0,88,176,132,magenta); Show_RGB(0,132,176,176,red); Show_RGB(0,176,176,220,yellow); Show_RGB(0,0,176,44,yellow); Show_RGB(0,44,176,88,red); Show_RGB(0,88,176,132,blue2); Show_RGB(0,132,176,176,green); Show_RGB(0,176,176,220,blue); delayms(10); //延时一段时间 showimage(gImage_infineon); Cy_GPIO_Pin_FastInit(GPIO_PRT8,0u,CY_GPIO_DM_PULLUP,0,0); Cy_GPIO_Pin_FastInit(GPIO_PRT8,1u,CY_GPIO_DM_PULLUP,0,0); for (;;) { if(CY_CAPSENSE_NOT_BUSY == Cy_CapSense_IsBusy(&cy_capsense_context)) { /* Process all widgets */ Cy_CapSense_ProcessAllWidgets(&cy_capsense_context); /* Turns LED ON/OFF based on button status */ led_control(); /* Establishes synchronized communication with the CapSense Tuner tool */ Cy_CapSense_RunTuner(&cy_capsense_context); /* Start the next scan */ Cy_CapSense_ScanAllSlots(&cy_capsense_context); /* Toggles GPIO for refresh rate measurement. Probe at P10.4. */ Cy_GPIO_Inv(CYBSP_SENSE_SCAN_RATE_PORT, CYBSP_SENSE_SCAN_RATE_NUM); } } }   在led_control函数中,添加电机控制的代码以及屏幕显示代码。 按下BTN0,IA拉高(默认IA、IB都是0),电机顺时针旋转,并显示顺时针文字(实际是图片)。 松开时,IA=0,电机不转。   按下BTN1,IB拉高(默认IA、IB都是0),电机逆时针旋转,并显示逆时针文字(实际是图片)。 松开时,IB=0,电机不转。   static void led_control(void) {     if(MSC_CAPSENSE_WIDGET_INACTIVE != Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON0_WDGT_ID, &cy_capsense_context))     {         Cy_GPIO_Write(CYBSP_LED_BTN0_PORT, CYBSP_LED_BTN0_NUM, CYBSP_LED_STATE_ON);         Cy_GPIO_Set(GPIO_PRT8,0u);         showimage1(gImage_shun);     }     else     {         Cy_GPIO_Write(CYBSP_LED_BTN0_PORT, CYBSP_LED_BTN0_NUM, CYBSP_LED_STATE_OFF);         Cy_GPIO_Clr(GPIO_PRT8,0u);     }     if(MSC_CAPSENSE_WIDGET_INACTIVE != Cy_CapSense_IsWidgetActive(CY_CAPSENSE_BUTTON1_WDGT_ID, &cy_capsense_context))     {         Cy_GPIO_Write(CYBSP_LED_BTN1_PORT, CYBSP_LED_BTN1_NUM, CYBSP_LED_STATE_ON);         Cy_GPIO_Set(GPIO_PRT8,1u);         showimage1(gImage_ni);     }     else     {         Cy_GPIO_Write(CYBSP_LED_BTN1_PORT, CYBSP_LED_BTN1_NUM, CYBSP_LED_STATE_OFF);         Cy_GPIO_Clr(GPIO_PRT8,1u);     } }   顺时针:     逆时针:       演示视频1   [localvideo]ebf3e8332faabc36417cbb0532ad64b7[/localvideo]   演示视频2   [localvideo]08cde9632b93b17f45311b201a16441a[/localvideo]     本次分享就到这里,谢谢!  

统计信息

已有881人来访过

  • 芯积分:300
  • 好友:3
  • 主题:44
  • 回复:138

留言

你需要登录后才可以留言 登录 | 注册


现在还没有留言