当前位置: 首页 > wzjs >正文

建设综合信息网站需要多少钱搜索网

建设综合信息网站需要多少钱,搜索网,程序员外包接单,wordpress音频在移动端播放不文章目录 1 实验任务2 系统框图3 硬件设计4 软件设计 1 实验任务 本实验任务是PS端写彩条数据至DDR3内存中,然后通过PL端的VDMA IP核将彩条数据通过HDMI接口输出显示。 2 系统框图 本实验是用HDMI接口固定输出1080P的彩条图,所以: rgb2lc…

文章目录

  • 1 实验任务
  • 2 系统框图
  • 3 硬件设计
  • 4 软件设计

1 实验任务

本实验任务是PS端写彩条数据至DDR3内存中,然后通过PL端的VDMA IP核将彩条数据通过HDMI接口输出显示。

2 系统框图

本实验是用HDMI接口固定输出1080P的彩条图,所以:

  1. rgb2lcd模块实际是rgb2dvi模块
  2. AXI GPIO不存在,因为不需要读取LCD屏幕的ID
  3. 动态时钟配置改为PLL,输出固定频率,与AXI-Interconnect不连
  4. VTC输出固定时序,与AXI-Interconnect不连
    在这里插入图片描述

3 硬件设计

注意事项:

  1. VTC的clken引脚
    • 该引脚不连接,VTC也能正常工作
    • pg016中描述该引脚是"Video Core active-High Clock Enable",即高有效
    • 在Block Design中添加VTC后,clken引脚前边有个小圆圈,且双击该引脚,Polarity参数显示为ACTIVE_LOW,即低有效
    • 将该引脚接常量1,视频输出正常
    • 将该引脚接常量0,视频无法输出,VTC未工作
    • 结论:以文档为准,clken高电平有效
  2. rgb2dvi模块
    • 使用正点原子的rgb2dvi模块,数据的3个字节是G在中间,R和B在两头
    • 使用Digilent的rgb2dvi模块,数据的3个字节是B在中间,R和G在两头(调试时一脸懵逼)
      在这里插入图片描述

4 软件设计

注意事项:

  1. PS往DDR3写入数据后,要使用Xil_DCacheFlushRange刷新;
  2. run_triple_frame_buffer函数并非只能用于三帧缓存的情况,实际1-32帧缓存均可使用该函数(取名triple可能和VDMA模式使用三帧缓存有关);ReadSetup函数和WriteSetup函数会根据VDMA配置时选择的Frame Buffers数量设置相应数量的帧缓冲区起始地址;本实验选择Frame Buffers数量=1,PS端只往DDR3中写入一帧彩条图;
  3. XAxiVdma_DmaStop函数往VDMACR寄存器的bit0写0(Run / Stop controls the running and stopping of the VDMA channel. ),当前VDMA操作完成后停止(0 = Stop – VDMA stops when current (if any) VDMA operations are complete)
/***************************** Include Files *********************************/
#include "stdio.h"
#include "xparameters.h"
#include "xstatus.h"
#include "xaxivdma.h"
#include "vdma_api.h"
#include "xil_cache.h"
#include "xuartps.h"
#include "sleep.h"
/************************** Constant Definitions *****************************/
#define VDMA_DEVICE_ID		XPAR_AXIVDMA_0_DEVICE_ID
#define IMAGE_WIDTH			1920
#define IMAGE_HEIGHT		1080
#define MEMORY_BASEADDR		XPAR_PS7_DDR_0_S_AXI_BASEADDR#define UART_DEVICE_ID		XPAR_XUARTPS_0_DEVICE_ID
#define UART_BASEADDR    	XPAR_XUARTPS_0_BASEADDR
/**************************** Type Definitions *******************************//***************** Macros (Inline Functions) Definitions *********************//************************** Function Prototypes ******************************/
s32  UartPsInit(XUartPs *UartPsInstPtr, XUartPsFormat* UartFormatPtr);void GenPureColor(u8* DestAddr, u32 ImageWidth, u32 ImageHeight);
void GenColorBar(u8* DestAddr, u32 ImageWidth, u32 ImageHeight);
/************************** Variable Definitions *****************************/
XAxiVdma VdmaInst;
XUartPs UartInst;int FrameBufferAddr = (MEMORY_BASEADDR + 0x02000000);XUartPsFormat UartFormat = {XUARTPS_DFT_BAUDRATE,     // 115200XUARTPS_FORMAT_8_BITS,XUARTPS_FORMAT_NO_PARITY,XUARTPS_FORMAT_1_STOP_BIT
};
/*****************************************************************************/int main()
{//int Status;u8* VdmaBufferAddr = (u8*)FrameBufferAddr;char cmd;// 串口初始化Status = UartPsInit(&UartInst, &UartFormat);if (Status != XST_SUCCESS) {printf("UART Initialization Failed.\n");return XST_FAILURE;}// 写入纯色图(用于确定RGB的字节位置)
//	GenPureColor(VdmaBufferAddr, (u32)IMAGE_WIDTH, (u32)IMAGE_HEIGHT);// 写入彩条图GenColorBar(VdmaBufferAddr, (u32)IMAGE_WIDTH, (u32)IMAGE_HEIGHT);//Status = run_triple_frame_buffer(&VdmaInst, VDMA_DEVICE_ID, IMAGE_WIDTH, IMAGE_HEIGHT, FrameBufferAddr, 0, 0);if (Status == XST_FAILURE) {printf("VDMA Run Failed.\n");}//printf("VDMA Control Ready (s=start, q=stop):\n");while (1) {if (XUartPs_IsReceiveData(UART_BASEADDR)) {cmd = XUartPs_ReadReg(UART_BASEADDR, XUARTPS_FIFO_OFFSET);if (cmd == 's') {  // 启动VDMAif (XAxiVdma_DmaStart(&VdmaInst, XAXIVDMA_READ) == XST_SUCCESS) {printf("VDMA Start Succeeded.\n");} else {printf("VDMA Start Failed.\n");}}else if (cmd == 'q') {  // 停止VDMAXAxiVdma_DmaStop(&VdmaInst, XAXIVDMA_READ);printf("VDMA Stop Succeeded.\n");}}usleep(10000); // 降低CPU占用}//return 0;
}
/*****************************************************************************/
s32 UartPsInit(XUartPs *UartInstPtr, XUartPsFormat* UartFormatPtr)
{//s32 Status;XUartPs_Config *UartConfigPtr;// 查找UART配置UartConfigPtr = XUartPs_LookupConfig(UART_DEVICE_ID);if(NULL == UartConfigPtr){return XST_FAILURE;}// 初始化UARTStatus = XUartPs_CfgInitialize(UartInstPtr, UartConfigPtr, UartConfigPtr->BaseAddress);if (Status != XST_SUCCESS) {return XST_FAILURE;}// 设置UART数据格式XUartPs_SetDataFormat(UartInstPtr, UartFormatPtr);// 设置UART操作模式XUartPs_SetOperMode(UartInstPtr, XUARTPS_OPER_MODE_NORMAL);//return XST_SUCCESS;
}
/*****************************************************************************/
void GenPureColor(u8* DestAddr, u32 ImageWidth, u32 ImageHeight)
{// 禁用缓存(如果目标内存是非缓存区域)Xil_DCacheDisable();for (u32 y = 0; y < ImageHeight; y++) {for (u32 x = 0; x < ImageWidth; x++) {// 计算当前像素的内存位置(3字节/像素)u32 PixelOffset = (y * ImageWidth + x) * 3;u8* PixelAddr = DestAddr + PixelOffset;// 写入RGB三个字节PixelAddr[0] = 0x00;PixelAddr[1] = 0x00;PixelAddr[2] = 0xff;}}// 如果需要,刷新缓存Xil_DCacheFlushRange((INTPTR)DestAddr, ImageWidth * ImageHeight * 3);//return;
}/*****************************************************************************/
void GenColorBar(u8* DestAddr, u32 ImageWidth, u32 ImageHeight)
{// 定义8种颜色(R, G, B顺序)const u8 color_bars[8][3] = {{0x00, 0x00, 0x00}, // 黑{0xff, 0xff, 0xff}, // 白{0xff, 0x00, 0x00}, // 蓝{0x00, 0xff, 0x00}, // 绿{0x00, 0x00, 0xff}, // 红{0xff, 0xff, 0x00}, // 青{0xff, 0x00, 0xff}, // 紫{0x00, 0xff, 0xff}  // 黄};// 计算每个色条的宽度u32 BarWidth = ImageWidth / 8;// 禁用缓存(如果目标内存是非缓存区域)Xil_DCacheDisable();for (u32 y = 0; y < ImageHeight; y++) {for (u32 x = 0; x < ImageWidth; x++) {// 计算当前色条索引u32 BarIndex = x / BarWidth;// 计算当前像素的内存位置(3字节/像素)u32 PixelOffset = (y * ImageWidth + x) * 3;u8* PixelAddr = DestAddr + PixelOffset;// 写入RGB三个字节PixelAddr[0] = color_bars[BarIndex][0];PixelAddr[1] = color_bars[BarIndex][1];PixelAddr[2] = color_bars[BarIndex][2];}}// 如果需要,刷新缓存Xil_DCacheFlushRange((INTPTR)DestAddr, ImageWidth * ImageHeight * 3);//return;
}

文章转载自:

http://I5QTXcFC.bswhr.cn
http://jRp8bQ10.bswhr.cn
http://zKg2piuZ.bswhr.cn
http://sUgvwje1.bswhr.cn
http://236Of9JA.bswhr.cn
http://vkd3MCWQ.bswhr.cn
http://7Jrx8yQs.bswhr.cn
http://RLxeZ5B0.bswhr.cn
http://5tsskVH7.bswhr.cn
http://pC7FWzQB.bswhr.cn
http://w0lZFQL5.bswhr.cn
http://kpLJ6oAF.bswhr.cn
http://Nb48OqxY.bswhr.cn
http://0islOYTI.bswhr.cn
http://JRaubCc3.bswhr.cn
http://1y3gHFoz.bswhr.cn
http://LxWWMEVx.bswhr.cn
http://EFg1iTGE.bswhr.cn
http://D2szHEox.bswhr.cn
http://Qwoo2101.bswhr.cn
http://pQZNqpO9.bswhr.cn
http://13YIFflL.bswhr.cn
http://NFnFwfCl.bswhr.cn
http://iTuiRuPK.bswhr.cn
http://XlOyKonV.bswhr.cn
http://2PRBSxfd.bswhr.cn
http://9xv2IKs3.bswhr.cn
http://gf6SHnGj.bswhr.cn
http://tbbfqzfs.bswhr.cn
http://mMByQvBW.bswhr.cn
http://www.dtcms.com/wzjs/664940.html

相关文章:

  • 系列图标设计网站推荐wordpress的安装教程
  • 网站建设平台有哪些 谢谢平台建站网站个人备案需要什么
  • cps广告联盟网站wordpress禁止更新
  • c 做网站 知乎企业邮箱登录
  • 企业网站是怎么建站的怎么做网站演示
  • 奉化市住房和城乡建设局网站网站设计毕业设计
  • 东莞建网站公司动广州建设厅网站
  • 做百度联盟怎么才能创建多个网站图片制作工具
  • 网站建设开发方式包括哪些腾讯云服务器如何使用
  • 淄博网站建设优惠臻动传媒团购网站开发代码
  • 网站建设辶首先金手指十五成功的电商网站
  • wordpress 调用子栏目百度网站优化外包
  • 找人做一个网站需要多少钱自己做视频网站资源从哪里来
  • 小语种外贸建站网站没备案能访问吗
  • 网站做优化的好处可以做关键词优化的免费网站
  • 泸州网站建设兼职南京酒店网站制作
  • 橙色大气风格网站模板深圳市建设混凝土投标网站
  • 临高网站建设ui网页设计尺寸
  • 柳市网站计算机网页制作题教程
  • 成都建站seo做的很好的网站
  • 给网站做网站建设怎么汇报
  • 网站换关键词福建八大员建设厅延续的网站
  • 网站后台导入excel表格上海平台网站建设
  • 如何建设网站山东济南兴田德润官网上海企业宣传片制作
  • 河北涞水建设厅官方网站免费搭建微信小程序
  • 美丽阿坝网站怎么做长沙企业网站建设哪家好
  • 互联网网站运营推广专业seo站长工具全面查询网站
  • 桂林网站建设找骏程嘉兴网站制作软件
  • 网站后台 更新缓存建筑设计的主要内容
  • 大数据网站书生商友网站建设