1nnocent

  • 2025-02-08
  • 加入了学习《如何设计FPGA-AXI总线》,观看 如何科学设计FPGA 从0手敲AXI总线接口

  • 2025-02-07
  • 加入了学习《如何设计FPGA-AXI总线》,观看 如何科学的设计FPGA:实现AXI总线自由之AXI解读

  • 加入了学习《如何设计FPGA-AXI总线》,观看 如何科学设计FPGA VIVADO中的时序约束和分析以及进阶技巧

  • 加入了学习《如何设计FPGA-AXI总线》,观看 如何科学设计FPGA:时序约束基础,了解时序分析模型

  • 2025-02-06
  • 回复了主题帖: deepseek到底行不行啊?

    maychang 发表于 2025-2-6 18:36 所以想要靠DeepSeek来学习数学、物理、电工、电子……那算是休想。 我现在基本都是用来列列提纲,写写文档,物理学对AI来说应该还是比较难理解。

  • 2025-02-05
  • 回复了主题帖: 这个春节最火爆的AI大模型deepseek,你玩了吗?

    本基本上部署了一个,玩了没多久服务器就崩了后面

  • 2025-02-03
  • 回复了主题帖: 【Tang Primer 25K 测评】4、使用PMOD-DTx2模块点亮数码管(带呼吸效果)

    Jacktang 发表于 2025-2-3 10:11   视频效果看数码管显示的比较好 应该是这个数码管本身就挺好的

  • 2025-02-01
  • 发表了主题帖: 【Tang Primer 25K 测评】4、使用PMOD-DTx2模块点亮数码管(带呼吸效果)

    本帖最后由 1nnocent 于 2025-2-1 13:45 编辑     七段数码管是由七个等长的LED排列成一排,通常用于显示数字、字母或字符的一种常见的电子显示装置。每个段可以独立点亮或熄灭,因此它可以用来表示不同的数字或符号。实际就是多个LED灯,点亮不同的灯可以组合成不同的数字或字符,既然是LED灯那理论上也能实现呼吸灯的效果,本次实验也会将呼吸灯效果添加到数码管显示中。 功能需求: 显示数字0-9。 需要显示两位数码管,并使用动态扫描的方式“同时”显示两位数码管。 在以上的功能上添加呼吸灯效果。 硬件实现细节  digitaltube_driver模块:该模块用于控制两个bit数码管的显示,将需要显示的内容编码成0-9字符;两个数码管是交替显示的方式实现动态扫描效果。 module digitaltube_driver#( parameter SWITCH_CNT = 'd300_000 )( input clk, input rst, output reg dt_sel, output [6:0]digitalTube ); localparam P_0 = 7'b0000001 ; localparam P_1 = 7'b1111001 ; localparam P_2 = 7'b0010010 ; localparam P_3 = 7'b0110000 ; localparam P_4 = 7'b1101000 ; localparam P_5 = 7'b0100100 ; localparam P_6 = 7'b0000100 ; localparam P_7 = 7'b1110001 ; localparam P_8 = 7'b0000000 ; localparam P_9 = 7'b0100000 ; localparam P_X = 7'b1111111 ; //Truth Table for Displaying 0-9 on the Seven-Segment Display and for Blank Display localparam INC_CNT = 'hfff_fff; reg [31:0] cnt; reg [31:0] cnt_switch; reg [3:0] bit_ones; reg [3:0] bit_tens; reg [6:0] digitalTube_ones; reg [6:0] digitalTube_tens; assign digitalTube = dt_sel ? digitalTube_tens : digitalTube_ones; always@(posedge clk)begin if(rst) cnt_switch <= 'd0; else if(cnt_switch >= SWITCH_CNT) cnt_switch <= 'd0; else cnt_switch <= cnt_switch + 'd1; end always@(posedge clk)begin if(rst) dt_sel <= 1'b1; else if(cnt_switch >= SWITCH_CNT) dt_sel <= !dt_sel; else dt_sel <= dt_sel; end always@(posedge clk)begin if(rst) cnt <= 'd0; else if(cnt >= INC_CNT) cnt <= 'd0; else cnt <= cnt + 'd1; end always@(posedge clk)begin if(rst) bit_ones <= 'd0; else if(cnt >= INC_CNT) bit_ones <= (bit_ones >= 'd9) ? 'd0 : (bit_ones + 'd1); else bit_ones <= bit_ones; end always@(posedge clk)begin if(rst) bit_tens <= 'd0; else if(cnt >= INC_CNT) if(bit_tens >= 'd9) bit_tens <= 'd0; else bit_tens <= (bit_ones >= 'd9) ? (bit_tens + 'd1) : bit_tens; else bit_tens <= bit_tens; end always@(posedge clk)begin if(rst) digitalTube_ones <= 'b111_1111; else if(cnt_switch >= SWITCH_CNT) case(bit_ones) 4'd0 : digitalTube_ones <= P_0 ; 4'd1 : digitalTube_ones <= P_1 ; 4'd2 : digitalTube_ones <= P_2 ; 4'd3 : digitalTube_ones <= P_3 ; 4'd4 : digitalTube_ones <= P_4 ; 4'd5 : digitalTube_ones <= P_5 ; 4'd6 : digitalTube_ones <= P_6 ; 4'd7 : digitalTube_ones <= P_7 ; 4'd8 : digitalTube_ones <= P_8 ; 4'd9 : digitalTube_ones <= P_9 ; default : digitalTube_ones <= digitalTube_ones ; endcase end always@(posedge clk)begin if(rst) digitalTube_tens <= 'b111_1111; else if(cnt_switch >= SWITCH_CNT) case(bit_tens) 4'd0 : digitalTube_tens <= P_0 ; 4'd1 : digitalTube_tens <= P_1 ; 4'd2 : digitalTube_tens <= P_2 ; 4'd3 : digitalTube_tens <= P_3 ; 4'd4 : digitalTube_tens <= P_4 ; 4'd5 : digitalTube_tens <= P_5 ; 4'd6 : digitalTube_tens <= P_6 ; 4'd7 : digitalTube_tens <= P_7 ; 4'd8 : digitalTube_tens <= P_8 ; 4'd9 : digitalTube_tens <= P_9 ; default : digitalTube_tens <= digitalTube_tens ; endcase end endmodule pwm_gen模块:该模块用于产生pwm信号来驱动led实现呼吸灯效果,模块时钟默认50MHz,pwm一个周期为2秒,占空比变化2千次。以下为pwm_gen的代码。 module pwm_gen#( parameter CYCLE = 50_000, parameter STEP = 50 )( input clk, input rst, input ena, output pwm_out ); reg [31:0] cycle_cnt; reg [31:0] pwm_cnt; reg pwm_flag; wire pwm_inc; always@(posedge clk)begin if(rst) cycle_cnt <= 'd0; else if(ena) cycle_cnt <= cycle_cnt >= CYCLE ? 'd0 : (cycle_cnt + 'd1); else cycle_cnt <= 'd0; end always@(posedge clk)begin if(rst) pwm_cnt <= 'd0; else if(cycle_cnt >= CYCLE) pwm_cnt <= pwm_cnt >= CYCLE ? 'd0 : (pwm_cnt + STEP); else pwm_cnt <= pwm_cnt; end always@(posedge clk)begin if(rst) pwm_flag <= 1'b1; else pwm_flag <= pwm_cnt >= CYCLE ? !pwm_flag : pwm_flag; end assign pwm_inc = cycle_cnt <= pwm_cnt; assign pwm_out = pwm_flag ? pwm_inc : !pwm_inc; endmodule PMOD_DT_top模块:该模块为该实验的顶层模块,例化了上述两个模块,digitaltube_driver模块用于驱动数码管,pwm_gen用于产生呼吸灯效果。 module PMOD_DT_top( input clk, input rst, output dt_sel, output [6:0]digitalTube ); wire [6:0] digitalTube_dri; wire pwm_out; assign digitalTube[0] = digitalTube_dri[0] ? 1'b1 : (!pwm_out); assign digitalTube[1] = digitalTube_dri[1] ? 1'b1 : (!pwm_out); assign digitalTube[2] = digitalTube_dri[2] ? 1'b1 : (!pwm_out); assign digitalTube[3] = digitalTube_dri[3] ? 1'b1 : (!pwm_out); assign digitalTube[4] = digitalTube_dri[4] ? 1'b1 : (!pwm_out); assign digitalTube[5] = digitalTube_dri[5] ? 1'b1 : (!pwm_out); assign digitalTube[6] = digitalTube_dri[6] ? 1'b1 : (!pwm_out); digitaltube_driver#( .SWITCH_CNT ('d300_000) )digitaltube_driver( .clk (clk ), .rst (rst ), .dt_sel (dt_sel ), .digitalTube (digitalTube_dri) ); pwm_gen#( .CYCLE (50_000 ), .STEP (50 ) )pwm_gen( .clk (clk ), .rst (rst ), .ena (1'b1 ), .pwm_out (pwm_out ) ); endmodule PMOD_DT_pin:管脚约束文件,该实验使用了clk,rst,数码管引脚控制信号等。 IO_LOC "rst" H11; IO_PORT "rst" PULL_MODE=DOWN DRIVE=OFF BANK_VCCIO=3.3; IO_LOC "clk" E2; IO_PORT "clk" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3; IO_LOC "dt_sel" K5; IO_PORT "dt_sel" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[6]" L11; IO_PORT "digitalTube[6]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[5]" K11; IO_PORT "digitalTube[5]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[4]" L5; IO_PORT "digitalTube[4]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[3]" E10; IO_PORT "digitalTube[3]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[2]" E11; IO_PORT "digitalTube[2]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[1]" A11; IO_PORT "digitalTube[1]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "digitalTube[0]" A10; IO_PORT "digitalTube[0]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3;   功能验证 以下为上板验证效果: [localvideo]cf4d267a974df1b38418caf31e25c540[/localvideo] 工程源码:  

  • 回复了主题帖: 【Tang Primer 25K 测评】3、高云IDE使用及PMOD-LEDx8模块点灯实验

    秦天qintian0303 发表于 2025-2-1 08:23 这个直接有例程吗?看着好像汇编的写法 有例程但是我没看自己写的,用的是Verilog

  • 2025-01-30
  • 发表了主题帖: 【Tang Primer 25K 测评】3、高云IDE使用及PMOD-LEDx8模块点灯实验

    本帖最后由 1nnocent 于 2025-1-29 21:51 编辑     高云官网可以下载通用指南,里面包含了各种资料,包括fpga使用的原语、IDE使用指南、约束指南等等。 一、设计思路 实现 LED 数组的动态闪烁效果。 模拟人呼吸的节奏,通过控制 LEDs 的亮度变化来达到“呼出”和“吸气”的效果。 支持多通道 LED 显示。 二、工程建立     打开Gowin软件,点击New Project...建立工程,并设置好工程名称和保存路径,这里可以勾选默认路径,下次打开可以不用再选择路径。       选择器件时选中GW5A-LV25MG121NES型号。         最后点击finish就能完成工程的建立。    三、代码编写    新建文件选择Verilog File。       pwm_gen模块:该模块用于产生pwm信号来驱动led实现呼吸灯效果,模块时钟默认50MHz,pwm一个周期为2秒,占空比变化2千次。以下为pwm_gen的代码。 module pwm_gen#( parameter CYCLE = 50_000, parameter STEP = 50 )( input clk, input rst, input ena, output pwm_out ); reg [31:0] cycle_cnt; reg [31:0] pwm_cnt; reg pwm_flag; wire pwm_inc; always@(posedge clk)begin if(rst) cycle_cnt <= 'd0; else if(ena) cycle_cnt <= cycle_cnt >= CYCLE ? 'd0 : (cycle_cnt + 'd1); else cycle_cnt <= 'd0; end always@(posedge clk)begin if(rst) pwm_cnt <= 'd0; else if(cycle_cnt >= CYCLE) pwm_cnt <= pwm_cnt >= CYCLE ? 'd0 : (pwm_cnt + STEP); else pwm_cnt <= pwm_cnt; end always@(posedge clk)begin if(rst) pwm_flag <= 1'b1; else pwm_flag <= pwm_cnt >= CYCLE ? !pwm_flag : pwm_flag; end assign pwm_inc = cycle_cnt <= pwm_cnt; assign pwm_out = pwm_flag ? pwm_inc : !pwm_inc; endmodule     PMOD_LED_top模块:该模块为顶层模块,顶层模块例化了8个pwm_gen模块分别用于驱动8个led灯,每个灯的“呼吸”频率相同并且起点相互错开(第一个结束时第八个刚好开始),这样就可以实现具有流水灯效果的呼吸灯。以下为顶层模块的代码: module PMOD_LED_top( input clk, input rst, output [7:0]led ); parameter LED_STEP = 6_250_000; reg [7:0] ena; reg [31:0] cnt; always@(posedge clk)begin if(rst) cnt <= 'd0; else if(cnt >= LED_STEP) cnt <= 'd0; else cnt <= cnt + 'd1; end always@(posedge clk)begin if(rst) ena <= 'd1; else if(cnt >= LED_STEP)begin ena <= {ena[6:0],ena[0]}; end else ena <= ena; end genvar i; generate for(i=0;i<=7;i=i+1) pwm_gen#( .CYCLE (50_000 ), .STEP (50 ) )pwm_gen( .clk (clk ), .rst (rst ), .ena (ena[i] ), .pwm_out (led[i] ) ); endgenerate endmodule     管脚约束 IO_LOC "rst_n" H11; IO_PORT "rst_n" PULL_MODE=DOWN DRIVE=OFF BANK_VCCIO=3.3; IO_LOC "clk" E2; IO_PORT "clk" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3; IO_LOC "led[7]" A11; IO_LOC "led[6]" A10; IO_LOC "led[5]" E11; IO_LOC "led[4]" E10; IO_LOC "led[3]" K11; IO_LOC "led[2]" L11; IO_LOC "led[1]" L5; IO_LOC "led[0]" K5; IO_PORT "led[7]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[6]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[5]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[4]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[3]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[2]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[1]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_PORT "led[0]" PULL_MODE=NONE DRIVE=8 BANK_VCCIO=3.3; IO_LOC "rst" H10; IO_PORT "rst" PULL_MODE=DOWN DRIVE=OFF BANK_VCCIO=3.3; IO_LOC "clk" E2; IO_PORT "clk" PULL_MODE=NONE DRIVE=OFF BANK_VCCIO=3.3; 四、编译     编译过程中发现有报错,检查了clk信号的约束语句没有问题,但就是报错了       最后在网上搜索了一番发现是IO复用没有配置好。如下配置后正常编译。       五、上板验证     烧写代码验证具有流水灯效果的呼吸灯如下: [localvideo]55f1fc7002fba6b05e43569412ae64ae[/localvideo] 工程代码:  

  • 2025-01-29
  • 回复了主题帖: 【Tang Primer 25K 测评】1、硬件开箱

    walker2048 发表于 2025-1-29 21:39 PMOD也是支持I2C和SPI的,只是和常规淘宝模块接口区别比较大 我的意思是没有配iic和spi相关的扩展板,如果要学习iic和spi那就没有硬件环境了

  • 发表了主题帖: 【Tang Primer 25K 测评】2、环境搭建

    本帖最后由 1nnocent 于 2025-1-28 23:25 编辑     IDE安装过程用户手册中有介绍。     首先需要到官网下载安装包,广东高云半导体科技股份有限公司 ,本机是Windows系统所以选择For Win的版本。       下载完IDE软件压缩包后解压并双击进行安装。       点击next,再点击同意进行下一步安装。       之后Gowin和Gowin programmer都需要选上,其中的 Gowin 为 IDE 本体, 另一个 programmer 相关的是烧录软件。     选择安装路径后进行安装。         下一步不要更改任何东西,按照默认的点击Finish。       之后是安装驱动,之后一直点下一步,接受即可完成安装,桌面上显示Gowin_V1.9.11 (64-bit)图标便安装完成。      在licence过程中遇到了一点问题,就是这个开发板测评申请的是年终回炉的测评,已经接近年底了,现在(腊月廿八)才开始安装IDE,高云的工作人员都放假了,看网络上申请licence基本2个工作日就能拿到licence。就在以为测评要卡在licence上时这时候发现了一个帖子【高云】高云软件Gowin的license验证 - 高云 - 芯路恒电子技术论坛 - Powered by Discuz! 。可以通过修改本机物理地址的方式使用之前已经申请的licence。     但是....在这个帖子中没有找到licence,难道又要卡在licence这里了?最后发现这是个开发板的网站,该网站主页相应开发板的资料中可以找到licence。       最后成功添加licence,一波三折,看来年终回炉的测评要提前注意测评开发板使用到的IDE是否需要licence,需要的话趁早在放假前申请好licence以免影响测评进度。       licence安装完成之后使用官方提供的历程下载试下效果。 [localvideo]b2a997ef4ce54064976419a4c7148404[/localvideo]  

  • 2025-01-28
  • 回复了主题帖: 旧手机你们一般怎么处理?

    dcexpert 发表于 2025-1-28 11:36 安装termux、tailscale等app,作为随身服务器,非常方便。 怎么玩啊?有没有教程

  • 回复了主题帖: 【Tang Primer 25K 测评】1、硬件开箱

    wangerxian 发表于 2025-1-28 09:12 模块化开发板就是不错,节约成本,还可以任意搭配 是的,这个扩展板很好用

  • 2025-01-27
  • 发表了主题帖: 【Tang Primer 25K 测评】1、硬件开箱

        Tang Primer 25K开发板收到了,板子非常小巧,看到这个板子让我想起了之前的ufun板。     首先来看下开发板主体,左边是本次测评的Tang Primer 25K 开发板,右边是之前的ufun开发板,两者相同的特点是都很小巧,大概三指这么大。如果说ufun是stm中最小巧的开发板,那么Tang Primer 25K 是FPGA中最小巧的开发板。      Tang Primer 25K是基于 GW5A-LV25MG121 设计的一款极小封装的核心板(23x18mm),虽然整体比较小巧,但是芯片资源还是不错的。 项目 参数 补充 FPGA 芯片 GW5A-LV25MG121 逻辑单元(LUT4) 23040 寄存器(FF) 23040 分布式静态随机存储器S-SRAM(bits) 180K 块状静态随机存储器B-SRAM(bits) 1008K 块状静态随机存储器数目B-SRAM(个) 56 乘法器(18x18 Multiplier) 28 锁相环(PLLs) 6 I/O Bank 总数 8 Flash 64Mbits NOR Flash   整体封装 2x60P BTB 核心板   普通IO 75   MIPI IO 4lane Data       该开发板分为核心板,Dock底板和6个扩展PMOD板。其中核心板仅仅只有一元硬币大小;Dock底板将核心板的IO引出并留有PMOD扩展板接口;另外还配备了6块PMOD接口的扩展板(两个LED扩展板、一个HDMI接口扩展板、一个SD卡扩展板、一个按键扩展板、一个数码管扩展板)。     LED扩展板:每块LED扩展板上有八个LED灯,学习开发板点灯必备。而且还配了两块LED扩展板,量大管饱了属于是。           HDMI接口扩展板:Tang Primer 25K 开发板虽然只有三指大小,但是加上这个HDMI扩展板后也能实现点亮显示器的功能。       SD卡扩展板:SD卡拓展板的加入让Tang Primer 25K开发板变得更加灵活,需要使用到SD卡时插入SD卡扩展板即可,并且该扩展板同样非常小巧;不需要SD的场景时也能取下来,腾出了宝贵的IO资源以用于其他地方。       按键扩展板:按键扩展板不仅只含有4个轻触按键,另外还带有4个拨码开关。       数码管扩展板:数码管扩展板配备两个7段数据管,两个不多也不少,静态数码管和动态数码管都能覆盖到,市面上有些开发板配备了多个数码管,个人觉得两个以上都没啥意义了就是数量上的差异还占空间。       总结:Tang Primer 25K 这块开发板给我的感觉是有优点也有一点点不足的地方。 优点:1、开发板整体很小巧,日常学习使用携带很方便; 2、配备的PMOD接口的扩展板很实用,在其他开发板上也能使用,学习完还能将这些扩展板拿掉自己添加需要的扩展; 缺点:1、一些常见的接口协议没有相应的外设,比如iic、spi等等,后续打算自己做一个iic接口的PMOD扩展板,手头刚好有一个iic协议的温度传感器。

  • 2025-01-23
  • 回复了主题帖: 【 EEWORLD陪你过大年,新年积分兑换盲盒收到啦!】

    光这个屏幕就值了啊

  • 回复了主题帖: 收到盲盒礼物:FSSDC-9B506-EK Easy Kit

    wenyangzeng 发表于 2025-1-23 15:48 十多年前的软件平台现在找不到,玩不起来 只能拆个屏幕玩了,不知道还能不能找到驱动程序  

  • 回复了主题帖: 收到盲盒礼物:FSSDC-9B506-EK Easy Kit

    我也开到这个了

  • 2025-01-20
  • 回复了主题帖: 【复刻瀚文键盘】7、键盘组装(完工)

    Alohaq 发表于 2025-1-20 11:01 好奇扩展板您现在用来干什么呀?总觉得这玩意实际用起来很鸡肋 墨水屏纯好看一点,那个电机可以实现鼠标滚轮的功能

  • 2025-01-19
  • 回复了主题帖: 【测评入围名单(最后1批)】年终回炉:FPGA、AI、高性能MCU、书籍等65个测品邀你来~

    个人信息确认无误,可以完成计划。

统计信息

已有290人来访过

  • 芯积分:1223
  • 好友:3
  • 主题:133
  • 回复:726

留言

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


现在还没有留言