自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(55)
  • 资源 (1)
  • 收藏
  • 关注

原创 使用DDR4控制器实现多通道数据读写(十三)

与写开始标志同时产生。写地址可以为0,或者为64的整数倍,因为每个数据都需要64个地址来存储,ddr4的地址空间为4GB,使用64的整数倍作为起始地址,这样当写到ddr4的最后一个地址空间时,可以将完整的512位数据存储进去。如果将随意的地址作为写起始地址,当写到ddr4的最后一个地址空间时,不足以将完整的512位数据放进去。为了可以读出写入的数据,所以产生读开始标志时刻相比写开始标志晚几个时钟周期,当计数器计数到’d999时产生读开始标志。我们的目的时将写入的数据读出来,所以读起始地址与写起始地址相同。

2025-05-23 15:15:31 523

原创 LVDS系列13:Xilinx Ultrascale系可编程输入延迟(三)

可以看到同步模式下,在抽头0变化到抽头511,变化前的数据沿延时0.2ns,变化后的第一个数据沿延时0.2ns,变化后的第二个数据沿延时2.755ns,延时在inc和ce属于有效后,再等到datain信号一个跳变沿才生效,所以变化后第二个沿延时生效;其中抽头为0时,延时0.2ns,抽头为100时,延时0.7ns,抽头为511时,延时2.755ns,这里仿真中单个抽头延时为5ps,DELAY_TYPE设置为FIXED,该模式下DELAY_VALUE参数设置的值为抽头值,范围0~511,且配置后不能更改;

2025-05-21 15:05:56 613

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十三讲)

这样滑动条的起始值可以不是0,使用 lv_bar_set_start_value(bar, new_value, LV_ANIM_ON / OFF) 设置起始值。还有一种拓展模式,在某些情况下,需要将滑动条设置为仅对拖动旋钮做出反应,可以通过添加 LV_OBJ_FLAG_ADV_HITTEST lv_obj_add_flag(slider, LV_OBJ_FLAG_ADV_HITTEST) 来启用此功能。可以使用 lv_slider_set_mode(slider, LV_SLIDER_MODE_…

2025-05-20 14:24:40 380

原创 使用DDR4控制器实现多通道数据读写(十二)

这一节使用interconnect RTL ip核将DDR4与四个读写通道级联,在测试工程中,将四个通道同时写入/读出地址与数据,并使用modelsim仿真器仿真,四个通道同时发送写请求或读请求后,经过interconnect后,观察数据的读写功能。为了测试在不同的时钟域时的读写情况,0、2、3通道为75MHz时钟,1通道为125MHz时钟。IP核的系统复位为低有效复位,由ddr4输出的用户复位信号取反得到。下图为通道1和通道3的读写测试波形,由于通道1的读写请求最晚,所以通道1的响应优先级最小。

2025-05-16 09:15:26 1029

原创 LVDS系列12:Xilinx Ultrascale系可编程输入延迟(二)

使用VARIABLE或VAR_LOAD模式时,需主动操作EN_VTC管脚,也就是要修改抽头值时,将EN_VTC管脚置0,停止校准操作,等待写入修改抽头值完毕后,再将EN_VTC管脚置1,也就是组件正常工作时要将EN_VTC管脚置1,保证工作时EN_VTC管脚置1能校准延迟;12ps,至于使用时延迟时间具体为其中哪个值,这个没法获取,所以该模式下不要纠结延时多少,延时多长时间不重要,延迟线的抽头数量才重要,所以COUNT模式下延时的计量靠抽头数量而不是延时时间;此模式适用于始终定期切换的时钟或数据。

2025-05-14 14:05:41 896

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十二讲)

返回值:当前选中的选项的索引(从 0 开始),如果没有选中任何项,则返回 LV_DROPDOWN_RESULT_NONE。Key: 将键发送给对象,用lv_indev_get_key(lv_indev_active());• LV_EVENT_VALUE_CHANGED 在选择新选项或打开/关闭列表时发送。Press Lost: 对象仍在被按下,但滑动光标/手指离开对象。Clicked: 如果没有被滚动,在释放时被调用(与长按无关)。Pressing: 对象正在被按下(在按下期间持续调用)。

2025-05-13 14:38:40 762

原创 LVDS系列11:Xilinx Ultrascale系可编程输入延迟(一)

按照IDELAYCTRL的参考时钟频率可以准确计算获取到,如200M参考时钟抽头分辨率为78ps,Ultrascale系列相对于7系列架构大改,体现便是U/U+系列的抽头增加到512个,同时每个抽头的分辨率就无法像7系列那样能得到一个准确的值,是一个波动的范围值,抽头分辨率随着工艺温度电压的变化而变化。EN_VTC:电压温度补偿开启的使用信号,COUNT模式下不能使用,必须保持为0,TIME模式下需要使用,在延迟工作时要启用温度电压补偿,在修改抽头值时需要关闭温度电压补偿,修改完后启用;

2025-05-09 09:46:36 1162

原创 使用DDR4控制器实现多通道数据读写(十一)

只有一个主设备,四个从设备,多个主机读写一个从机是通过主机的ID号不同来实现的,每个主机具有不同的ID号,连接到AXI Interconnect RTL IP的从机接口,AXI Interconnect RTL IP的主机接口连接到DDR4。在这里将主机id位宽设置为4,那么作为从机的DDR4的id位宽为8。在interfaces界面中,数据位宽为512位,不进行转换,使用异步时钟,仲裁模式选择轮询仲裁,插入寄存器切片,用于解决时序问题,减少时钟域之间的延迟,并确保数据在跨时钟域传输的正确性。

2025-05-08 15:27:46 789

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十一讲)

这一期讲解lvgl中下拉框的基础使用,下拉列表允许用户从选项列表中选择一个值,下拉列表的选项表默认是关闭的,其中的选项可以是单个值或预定义文本。在右侧的属性列表中,下拉框分为三个模块分别是main主模块、selected选择模块、list列表模块、scrollbar滚轮模块。以下图片是selected选择模块的使用,主要用来设置点击下拉框后,选中条的属性设置,分别有选中的边框粗细以及颜色的设置。以下指的是列表的属性设置具体有列表背景颜色、边框大小以及字体设置,最后的高度指的是列表展开的长度设置。

2025-05-06 17:01:30 802

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第十讲)

/ 获取输入框中的文本。// 获取输入框中的文本。// 这里编写按钮点击后的处理代码。

2025-04-30 14:27:17 344

原创 使用DDR4控制器实现多通道数据读写(十)

所以只要根据fifo_1的几乎满(wrfifo_almost_full)信号为低电平状态就可以控制数据写入,根据fifo_2d的空(rdfifo_empty)信号为低电平状态就可以控制数据输出。如果写入的数据和读取的数据不相同,error_1就会拉高,可以通过error_1的状态判断ddr循环读写的功能是否正确。上图中,可以看到,读出的数据数量和存入的数据数量相等,并且可以观察到,测试工程中可以存储的数据数量为ddr4的最大存储量加上两个fifo的存储量。2、读出数据测试代码。本文章由威三学社出品。

2025-04-29 13:51:56 1191

原创 USB3.0 、 PCIE、RFSoC、NVMe 新课程课程直播发布公告

hello各位小伙伴,大家好久不见!我们将于4月29号本周二晚上20:00在B站对: USB3.0 、 PCIE、RFSoC、NVMe;新课程进行发布直播,对课程感兴趣的小伙伴可以来直播间和我们进行交流沟通;期待明天晚上20:00直播和大家见面https://live.bilibili.com/23601432;大家可以提前预约直播以免错过。

2025-04-28 17:47:02 159

原创 LVDS系列10:Xilinx 7系可编程输入延迟(三)

效果如上图所示,ldpipeen端口拉高了几次去寄存,最后图中三次ld拉高,实际加载到线上的抽头值为3、7、11,都是在拉高ld前的最后一次ldpipeen拉高寄存的值,说明ldpipeen使能后加载到寄存器里的值会被新值覆盖,最后ld加载时以最新的值为准。从上图中可以看到,VAR_LOAD模式下,inc=1/ce=1和ld同时使能时,ld控制的cntvaluein端口值成功写入,inc/ce的递增操作未生效,说明在该模式下ld控制的优先级较高,但是在使用改模似时,尽量避免出现控制逻辑冲突的情况;

2025-04-28 11:45:26 710

原创 LVDS系列9:Xilinx 7系可编程输入延迟(二)

可以看到上图中,此时IDELAY_VALUE设置为0,此时cntvalueout为0,表示此时原语正在工作的抽头值为0,idatain和dout的两个上升沿间隔了0.6ns,也就是之前所讲的200M的延时基准;上图为将IDELAY_VALUE参数设置为30(0x1e),此时cntvalueout为0x1e,可以看到此时的idatain和dout的延时为2.94ns=0.6ns+30*78ps,与理论的延时时间相符;REFCLK如果出现异常如保持一个周期的1或0,RDY就会拉低,此时就需要重新复位该原语;

2025-04-24 15:42:27 1004

原创 使用DDR4控制器实现多通道数据读写(九)

使用fifo_1的rd_data_count表示fifo_1中可以读出多少个数据,ddr的深度-addr_left表示ddr中可以存多少个数据。因为写长度最大为255,所以当rd_data_count和addr_vac和awaddr_sub_cnt都大于255时,wr_len就为255,否则,就取这仨中最小的值-1。因为读长度最大为255,所以当addr_left和rd_fifo_left和araddr_sub_cnt都大于255时,rd_len就为255,否则,就取他仨中最小的值-1。

2025-04-23 15:03:46 489

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第九讲)

函数有三个分别为:(1)lv_cont_set_fit4(lv_obj_t * cont, lv_fit_t left, lv_fit_t right, lv_fit_t top, lv_fit_t bottom)以上函数的作用都是设定容器的自适应方式,第一个设定四个方向的自适应方式,第二个是设定水平和垂直方向上的自适应方式,第三个是将四个方向的自适应方式统一设定。这一期讲解GUI_guider中的容器控件的使用以及相关函数,容器本质上是具有布局和自动调整大小功能的基本对象 ,通常用来装载其他子控件。

2025-04-22 14:01:37 675

原创 使用DDR4控制器实现多通道数据读写(八)

用两个fifo连接ddr:首先由generate_data模块产生数据,把数据存入fifo_1中,再通过wr_ddr_start(写ddr开始信号)控制ddr把fifo_1中的数据写进ddr。在将DDR4中的数据读出后写入fifo_2时,需要控制从DDR4读取的长度和地址,DDR4每次读突发最长可以读出256个数据,之前将数据写进DDR4时,前一次突发和后一次突发的地址是相连的,所以每次读突发时,初始地址必须紧跟上一次突发后读出最后一个数据的地址。读出的数据做为fifo_2的写数据。

2025-04-17 16:15:47 568

原创 LVDS系列8:Xilinx 7系可编程输入延迟(一)

INC:抽头延迟的增量减量,搭配CE使用,只有当CE为高时,INC才有效,当CE为低时INC值不起作用,其中INC=1时抽头值递增,INC=0时抽头值递减,且INC和CE都与时钟C同步,且当CE保持高,每个C的时钟周期,根据INC的值设置,抽头值会在下一个时钟C的上升沿开始进行抽头值的递增递减操作;IDELAYE2原语的可编程延迟抽头会执行环绕操作,原语的延迟抽头值为0~31共32个数,环绕是指当抽头值当前到达边界,如0或31,在0时如果递减,抽头值将变为31,在31时如果递增,抽头值将变为0;

2025-04-16 10:05:44 899 1

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第八讲)

这一期我们来讲解GUI_guider中消息框的基本使用以及相关函数,消息框(Message Box)是一个用于显示消息、警告、通知或提示信息的常见 GUI 元素。ui->screen_2_msgbox_1 = lv_msgbox_create(ui->screen_2, “提示”, “账号或密码不得为空!//声明lv_style_t类型变量。//声明lv_style_t类型变量。//声明lv_style_t类型变量。//设置消息框的位置以及大小。//用于设置标题文本字母间隔。//用于设置标题文本透明度。

2025-04-15 15:01:49 620

原创 使用DDR4控制器实现多通道数据读写(七)

DDR4写模块根据ddr4_test模块发来的写开始信号,写数据数量,初始地址,首先通过写地址通道发送写数据的初始地址、写数据数量、和控制参数,wstrb信号作为写数据的掩码。在DDR4读模块中,根据ddr4_test模块发出的读开始信号,在读地址通道中发送读起始地址、读长度和控制信号,给DDR4发起读请求,根据读数据通道读出数据,rd_data作为读数据,rd_en作为读数据有效信号发送给ddr4_test模块。如图所示,读起始地址为0,读出16个数据,读出的第一个数据中,每个DW值为0x10。

2025-04-11 09:34:33 911

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第七讲)

默认是第一种键盘模式,当需要切换模式,进入到ta_event_cb函数修改模式,下面代码以数字模式举例子lv_keyboard_set_mode(kb, LV_KEYBOARD_MODE_NUMBER);在该界面中可以设置键盘文字的大小和文本类型,最下方判断键盘是否支持中文输入(中文输入,当汉字库不够大时,用户点击中文输入会少很多字)。//当LV_USE_KEYBOARD为1时启用虚拟键盘,LV_USE_ZH_KEYBOARD为1时支持中文输入。随后在系统设置界面中点击项目选项,选择显示键盘。

2025-04-10 13:50:08 1006

原创 LVDS系列7:Xilinx Ultrascale系ODDRE1原语

Clk上升沿(C_inter上升沿)采集din1和din2,din1在上升沿采集后立刻输出到dout,din2在上升沿采集后寄存到clk下降沿(C_inter下降沿)再输出到dout;Clk下降沿(C_inter上升沿)采集din1和din2,din1在下降沿采集后立刻输出到dout,din2在下降沿采集后寄存到clk上升沿(C_inter下降沿)再输出到dout;SR:异步置位复位端口,高有效,在正常工作前,输出Q将保持4个时钟周期的复位值;参数IS_C_INVERTED:反转输入时钟C,置1有效;

2025-04-09 09:19:51 749

原创 使用DDR4控制器实现多通道数据读写(六)

在图1中,T3-T4时刻,从设备接收第一个数据,T5-T6时刻,从设备接收第二个数据,T7-T8时刻,从设备接收第三个数据,T8-T9时刻,从设备接收低四个数据。主设备在传输第4个数据时,WLAST为高,表示第四个数据为本次写突发的最后一个数据。本章节讲述了DDR4的AXI读写时序,并通过仿真验证了DDR4的读写功能,本次仿真输入的有效数据为全部字节有效,后续会为大家演示数据掩码的作用,和突发类型的作用,主要验证FIXED、INTR、WRAP模式下的突发机制的不同,并详细介绍 WRAP模式的地址边界。

2025-04-03 11:03:10 580

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第六讲)

这一期来讲文本框控件的基本使用以及注意事项,首先文本区域是由一个Label与光标组合而成,用于文本输入。第六行指的是是否开启换行模式,新建文本框默认是开启换行模式,当文本框内容超出一行显示时,将在文本框的下方与右方出现滚动条。这里我们选择12号宋体,边框为黑色,字间距为2,内边距分别为距离顶部4,右侧4,左侧4,最后是关于阴影的设置保持不变即可。第三行最大长度指的是文本框输入最长为多少,当超过这个长度用户输入的内容将不在文本框内显示。第一行文本指的是在文本框中显示的文本,由用户进行输入。

2025-04-02 10:22:54 921

原创 LVDS系列4:Xilinx 7系ODDR原语

由于从上面截取的官方文档的时序波形图中可以看出,正确的数据输入应该是din1和din2每个clk时钟周期保持不变,但是如此按时序图提供的输入方式的话这两种模式下,输出格式都是一致的,那么我们就无法看到这两种模式有何区别了,所以这里将输入改为半个周期变换一次,所以我们就可以看出,上图两个模式下,输入信号其实是完全一致的,但是输出的dout信号却大不相同;每个时钟周期内,Q输出两个数据,上升沿输出D1,下降沿输出D2,两个模式下输出数据格式相同;每个时钟周期内,Q输出两个数据,上升沿输出D1,下降沿输出D2;

2025-04-01 17:51:49 682

原创 使用DDR4控制器实现多通道数据读写(五)

在写地址传输完成后,才能传输数据,主设备发起需要传输的数据,并置WVALID为高,当从设备准备好接收数据时,会拉高WREADY,当WVALID和WREADY同时为高时,表示数据成功传输了一个数据,在主机发送最后一个数据时,需要将WVALID和WLAST同时拉高,表示本次传输为本次突发的最后一个数据,当WVALID、WREADY和WLAST同时为高时,表示本次写突发结束。写数据通道(W):主设备----->从设备(WDATA,WVALID,WREADY,WLAST等)

2025-03-28 09:21:03 708

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第五讲)

点击clicked信号右上角的if按键,在弹出的弹窗中点击加号,在if右侧的条件栏填写“flag_btn。在触发事件中选择需要做出回应的对象,这里我们点击led_1控件,点击确认。• lv_led_set_brightness: 设置 LED 的亮度。• lv_led_get_brightness: 获取 LED 的亮度。• lv_led_set_color: 设置 LED 的颜色。• lv_led_get_color: 获取 LED 的颜色。• lv_led_set_style: 设置 LED 的样式。

2025-03-27 10:27:42 529

原创 LVDS系列5:Xilinx Ultrascale系IDDRE1原语

C)=C=C_inter,此时C_inter和CB_inter同相,那么原语功能就会失效,此时C_inter和CB_inter的上升沿都在C的上升沿,C的下降沿处没有上升沿的采集时钟,没有双沿的采样时钟就无法触发DDR的双沿采集功能,原语无法工作,且有可能造成亚稳态时序违例等影响系统稳定的错误;sclk,CB_inter=clk_b=sclk,符合C_inter和CB_inter互补情况,此时仿真图中clk和C_inter反相,clk_b和CB_inter同相,

2025-03-25 14:37:05 627

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第四讲)

2025-03-20 13:44:17 914

原创 使用DDR4控制器实现多通道数据读写(四)

在创建完DDR4的仿真模型后,我们为了实现异步时钟的读写,板卡中在PL端提供了一组差分时钟,可以用它通过vivado中的Clock Wizard IP核生成多个时钟,在这里生成两个输出时钟,分别作为用户的读写时钟,这样就可以用异步时钟来读写ddr4数据。在基本配置中可以使用时钟输入(clk_in),时钟输出(clk_out),复位(reset),时钟锁(locked)等信号来完成Clock Wizard IP核的基本配置,其中locked用来指示输出的时钟是否稳定,当locked有效后方可使用输出时钟。

2025-03-19 15:15:31 623

原创 LVDS系列4:Xilinx 7系IDDR原语

注意:在使用置位S和复位R端口时,两者不能同时置1有效,否则可能会导致输出状态不确定,还会有出现亚稳态时序风险导致系统异常,且两个端口同时控制还增加了逻辑复杂度,所以推荐在使用时优先R复位端口,将S置位端口置0,减少逻辑复杂度的同时避免出错,置位端口置1有效时,Q1、Q2将强制输出1;Q1在第一个时钟周期上升沿采样的数据D0A在第一个时钟周期的上升沿采样后直接输出,Q2在第一个时钟周期下降沿采样的数据D1A在第二个时钟周期的上升沿采样才输出,第一个时钟周期时Q2保持不关心的无效值;

2025-03-18 15:16:12 823

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第三讲)

在样式列表中第一行是关于按键模块的状态设置,我们只设置初始状态即可,下一栏是背景颜色和透明度的设置,再下面是字体的设置,我们选择16号字体与宋体格式,文字对齐方式为居中,最下面俩栏是美化方面的设置,我们可以根据边框背景颜色以及粗细自己自定义,也可点击更多预设样式选择官方提供的三种样式修改使用。就这样关于一个按键的设计就完成了,然后点击右上角的运行,在运行中点击c语言运行,开发者可以在该平台初步看到项目实现的样式与功能。//设置标签的宽度为按钮百分比。//设置标签文本换行方式。//创建按键上的标签。

2025-03-14 09:15:41 600

原创 使用DDR4控制器实现多通道数据读写(三)

使用DDR4控制器实现多通道数据读写(三)

2025-03-13 09:21:57 846 1

原创 LVDS系列3:Xilinx的IOBUFDS原语

前述的IBUFDS原语只能接收外部差分信号,此时连接管脚为input管脚,OBUFDS只能向外部输出差分信号,此时连接管脚为output管脚,但差分信号还有可能出现IO类型,也就是inout管脚,一对差分信号,可以输入,也可以输出,此时使用IBUFDS和OBUFDS就不能解决问题,需要使用到IOBUFDS原语;此时T=1,输出缓存启用,可以看到在原语的图中,IO、IOB到O的路径没有受到T端口开关的影响,此时O的输出来自IO、IOB,而IO、IOB的值此时来自于I,所以O值与I值相同。

2025-03-11 17:29:38 1474 1

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第二讲)

使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程(第二讲)

2025-03-07 09:42:58 260

原创 使用DDR4控制器实现多通道数据读写(二)

说明:ddr4 ip 接口的awlock、awcache、awprot、awqos、arlock、arcache、arprot、arqos信号在工程中没有特别要求,可以设置为0。核心模块在PL侧搭载了4片镁光(Micron)的DDR4内存,单片内存大小为1GB,数据接口16bit。在上一章我们已经把DDR4的IP核配置好了,这一章来描述一下DDR4 IP核的例化接口,以及接口的作用。awqos(arqos):服务质量(4bits),该信号用于优先级声明信号,值越高代表优先级越高。DDR4 IP核接口列表。

2025-03-05 15:53:05 378

原创 LVDS系列2:Xilinx的OBUFDS原语

前面一讲说到差分信号用于信号传输输入到FPGA内部处理时,需要使用IBUFDS原语将外部的差分信号变为单端使用,而如果FPGA想要输出差分信号,那么就需要将内部的单端信号转为差分信号输出,这个操作需要使用到OBUFDS原语去实现。参数SLEW:控制输出信号的压摆率(Slew Rate),控制输出信号电压从逻辑0(1)变到逻辑1(0)的速度,影响信号边沿的陡峭程度;在第1个黄线处,data输入0,dout_p输出0,dout_n输出1,输出正确;可以看到,输出的正端与输入相同,输出的负端与输入相反;

2025-03-04 17:34:40 734

原创 使用ZYNQ芯片和LVGL框架实现用户高刷新UI设计系列教程《第一讲》

为了配合ui界面的开发,我推荐使用NXP GUI-Guider软件,该软件是由恩智浦官方提供的,对于新手开发界面非常友好,支持中英文的切换以及屏幕选择的大小,该软件支持Python和C语言两种,相对于SquareLine来说对白嫖党非常友好。其内部提供了30多种内置的小工具,例如按钮、标签、滑块、图表、键盘、表格等。(2)多功能:提供了超过40种控件,例如按钮、滑块、列表、图表等,以及多种主题、动画、字体、图像等元素。显示设置中用户可以修改量程,波形的显示模式,每个通道的颜色以及采集模式与采集数据的长度。

2025-02-28 10:46:59 299

原创 使用DDR4控制器实现多通道数据读写

这种高带宽对于大量的数据的应用非常重要。对于Controller/PHY Mode 的选择,我们使用Controller + PHY模式,Xilinx UltraScale/UltraScale+等高端FPGA通常包含硬核PHY,选择Controller + PHY模式可直接利用硬核,降低功耗和延迟,并且此模式的开发更易上手。在Basic页面下,首先勾选上AXI4 Interface选项,我们选用的内存接口速度为2133MHz的ddr4芯片,由于双沿触发,频率为1066MHz,那么周期应为938ps。

2025-02-26 16:50:49 691

原创 LVDS系列1:Xilinx的IBUFDS原语

如下图所示,LVDS使用一对相位相反的差分信号传输数据,通过两者电压差来判断逻辑值,在发送端单端转差分,在接收端差分转单端。差分信号用于信号传输,但是在FPGA内部数据处理时,需要将差分信号变为单端使用,所以就需要将外来的差分信号转为单端,可以使用IBUFDS原语实现,将内部的单端信号转为差分信号输出,可以使用OBUFDS原语实现。上图中,左侧的输入管脚I和IB从FPGA焊盘输入的外部信号,其中I为差分信号的正端P端,IB为差分信号的负端P端;

2025-02-26 09:57:06 1219

威三电子FPGA面试真题讲解

威三电子FPGA面试真题讲解

2021-07-09

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除