demosaicv2.0--vga彩条信号的生成

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
先写个点灯模块,然后在顶层模块调用
顶层模块暂时需要rst和clk
但是示例文档里面却有四个时钟
在这里插入图片描述
查看四个时钟信号的原理图
B3B和B4A
在这里插入图片描述
B5B和B8A
应该是电平转换的作用,3.3V工作下翻转时间最大为3到4ns,而50M时钟,周期是20ns,够用
OSC_50来自于50M晶振
OSC_50_OUT2来自于25M晶振,经过SI5338Q(内含PLL)输出变成50M
在这里插入图片描述

在这里插入图片描述
不知道为什么要这么多时钟,下载了手册Cyclone V Device Handbook Volume 1: Device Interfaces and Integration,但是没看懂,但这个不重要
模块例化的时候就把四个时钟源都加进去
之前点灯用的是OSC_50_B3B,官方工程模板也只用到了这个时钟,那就把它作为设备驱动时钟
RST信号模板里面用的是AD27脚,但是没连上,它在板子上连的是DEV_CLRn,Enable device-wide reset,会让整个FPGA复位,所以我们模块不应该用它作为复位信号(因为设置不设置它,它出现低电平时都会复位)
点灯的时候我用的是KEY0(按下时低电平),就用它作为复位信号
在这里插入图片描述
无源蜂鸣器可以在背面看到电路板
FPGA一般用有源晶振
reg信号必须在信号敏感触发的alway里面才能被综合成register
assign是给wire型变量赋值
双向IO
在这里插入图片描述
优化关键路径来用面积换时间
如何知道电路中会产生毛刺,避免毛刺可以在输出加一个在clk上升沿才改变状态的register
阻塞赋值“=”(组合逻辑电路),非阻塞赋值“<=”(时序逻辑电路);

然后写完了点灯模块,编译成功,开始分配IO
在这里插入图片描述
编写SDC
create_clock -period 20 [get_ports OSC_50_B3B],表示创建了20ns周期的时钟OSC_50_B3B,还可以指定上升沿和下降沿,不过这里没有涉及。以后要是提高工作频率,SDC就要好好设计
下板有反应,灯疯狂闪烁

编译有几个warning信息,一个是说三个引脚没用到(就是那三个没用到的时钟)

Warning (205009): Dummy RLC values generated in IBIS model files for device 5CSXFC6 with package FBGA and pin count 896
Fine Pitch Ball Grid Array (FBGA)
官网解释:
Dummy RLC values generated in IBIS model files for device with package and pin count
(ID: 205009)
Dummy RLC values generated in IBIS model files for device with package and pin count
(ID: 205009)

Warning (334000): Timing characteristics of device 5CSXFC6D6F31C8ES are preliminary
官方论坛回复,是可以忽略的警告

Warning (10905): Generated the EDA functional simulation files although EDA timing simulation option is chosen.
这个警告是说quartus不支持后仿真
前仿真(综合后仿真);后仿真(时序仿真或布局布线后仿真)
在这里插入图片描述
接下来是编写testbench(其实应该在下板前编写然后看看逻辑仿真结果的)
assignment里面start,生成tb文件模板
Modelsim仿真成功
Modelsim和quartus联调的教程
接下来添加PLL
tools-megaWizard
设置PLL参数
在这里插入图片描述
例化了PLL,仿真结果正常
modelsim如何查看子模块信号波形
在这里插入图片描述
在这里插入图片描述
为什么rtl网表这里,这PLL的lock信号和RESET_n没有连起来(师哥的解释是quartus这个图有的时候只是意思一下,你拿vivado的网表看就没问题了,vivado生成的rtl原理图,你右击某个触发器或者连线还能跳到对应的代码位置),后面发现是wire的变量名写错了

这时候编译的警告又多了一些
Warning (13024): Output pins are stuck at VCC or GND Warning (13410): Pin “LED_0” is stuck at GND,意思是LED_0一直接地,下板的时候果然一直不亮,排查发现是reset的问题,导致LED_0一直为低电平,quartus就直接把它接地了
下板发现灯不亮,看波形,发现是reset没有连好,变量名字写错了
现在下板有现象了
在这里插入图片描述
查看比之前多出来的warning
Warning (332056): PLL cross checking found inconsistent PLL clock settings:
->Warning (332056): Node: u_vga_pll|vga_pll_inst|altera_pll_i|general[0].gpll~FRACTIONAL_PLL|vcoph[0] was found missing 1 generated clock that corresponds to a base clock with a period of: 20.000
是因为SDC里面没有对PLL进行约束
加上这两行,warning就没了
derive_pll_clocks
derive_clock_uncertainty

还有两个是PLL模块内部的warning,看样子没啥影响
Warning (10036): Verilog HDL or VHDL warning at altera_pll.v(398): object “cntsel_temp” assigned a value but never read
Warning (10036): Verilog HDL or VHDL warning at altera_pll.v(400): object “gnd” assigned a value but never read

接下来添加vga_colorbar和vga_driver模块
可能是pixel_xpos和pixel_ypos的问题
模块的vga_rgb改成vga_r,g和b,不降低性能,可读性增加

analysis后有警告,Warning: Verilog HDL Implicit Net warning at demosaic.v(66): created implicit net for “pixel_xpos”
将pixel_xpos声明为wire型即可,这个问题出现在调用的两个子模块连接上,一个子模块的输出直接通过一根线连接到另一个子模块的输出,需要声明连线为wire型。

然后分配io
下板验证,灯亮但是没有vga信号
用modelsim看看波形
VGA_VS,以及VGA_R,G,B信号有问题,都是低电平
先查查colorbar模块

发现xpos等信号都是高阻
在这里插入图片描述
cnt_v一直是0
cnt_h到799是,cnt_v加一,结果并没有
在这里插入图片描述
改完好嘞,显示屏能识别vga信号,但是是黑屏
modelsim查看,是RGB信号的输出问题,输出一直是0
像素位置还是高阻
在这里插入图片描述
data_req一直为0,它应该在cnt_h属于[143,783),且cnt_v属于[34,514)的时候为高,事实上也确实如此,但是rgb
在这里插入图片描述

assign pixel_xpos = data_req ? (cnt_h-(H_SYNC+H_BACK-1’b1)) :10’d0;
计算之后在该处的波形也对的上
时间是10 000 000ns
单独仿真vga_driver时,pixel_xpos是有数的,但是和vga_colorbar一起的时候,就成了高阻,不知道为什么
可能是因为输出的信号没有经过寄存器,查看RTL视图发现有寄存器
注意到一个现象,pixel_xpos虽然高位是高阻,但是最低位有变化
排查问题在顶层模块的wire没有指定数据位宽,正确写法应该是wire [9:0] pixel_xpos;
实际上却写成了:
wire pixel_xpos;
wire pixel_ypos;
wire pixel_data_r;
wire pixel_data_g;
wire pixel_data_b;
改完后有输出正确的彩条信号
在这里插入图片描述
Modelsim仿真结果:
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
EDA VGA彩条信号显示控制电路设计实验是一项关于视频信号处理和显示的实验。在实验中,我们需要设计一个电路,能够接收视频信号,并将其转换为VGA彩条显示。以下是该实验的设计流程。 首先,我们需要理解VGA(Video Graphics Array)的工作原理。VGA是一种视频传输标准,通常用于连接计算机和显示器。它使用模拟信号来传输图像数据,包括RGB三个颜色通道的信号和相应的同步信号。 接下来,我们可以开始设计EDA VGA彩条信号显示控制电路。首先,我们需要一个视频信号输入接口,该接口可以接收来自计算机或其他设备的视频信号。我们可以使用电位器或电容器来调整输入信号的电平和增益。 接着,我们需要进行视频信号的处理。这包括信号放大、滤波、去噪等步骤,以确保信号的质量和稳定性。我们可以使用运算放大器、滤波器和其他电子元件来完成这些处理步骤。 然后,我们需要将处理后的视频信号转换为VGA彩条显示。这需要将处理后的信号VGA的同步信号进行合并,并将其转换为VGA接口所需的模拟信号。我们可以使用逻辑门、多路复用器和数字模拟转换器等电子元件来完成这一步骤。 最后,我们需要设计一个控制电路,能够控制VGA彩条的显示效果。我们可以使用微控制器或数字电路来实现这个功能。通过控制电路,我们可以调整彩条的颜色、亮度、对比度等参数,实现不同的显示效果。 在设计完成后,我们需要进行电路的实现和测试。通过连接电路和相应的设备,我们可以验证电路的工作情况和性能。 总结来说,EDA VGA彩条信号显示控制电路设计实验是一项涉及视频信号处理和显示的实验。通过设计电路和相应的控制电路,我们可以实现将视频信号转换为VGA彩条显示,并通过控制电路调整显示效果。整个实验的设计流程包括视频信号的输入接口、信号的处理、VGA接口转换和显示控制等步骤。最终,我们需要对电路进行实现和测试,以验证其工作情况和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值