quartus--图像显示、缩放、移动(三)

上一篇:quartus–图像显示、缩放、移动(二)

三.图像显示、缩放、移动

1.调用PLL(phase locked loop)

同上一篇讲的讲用ROM ip核类似,直接搜索pll即可,懂点英文调用很简单,这里不再具体阐述。

2.行扫描与场扫描

第一篇里的VGA原理中,我们知道由于视觉暂留效应,并避免前一次图像的的余辉影响下一个图像,所以每行、每场的像素显示必须有消隐的过程。
行扫描:

always@(posedge iclk or posedge irst)
	if(irst) 
		begin 
			h_cont<=0; 
			ovga_hs<=1;
		end
	else 
		begin
			if(h_cont<H_TOTAL) 
				h_cont<=h_cont+1'b1;
			else 
				h_cont<=0;
			if(h_cont<=H_TA-1) 
				ovga_hs<=1'b0;
			else 
				ovga_hs<=1'b1;
		end

场扫描:(注意到ovga_hs源自行扫描)

always@(posedge ovga_hs or posedge irst)
	begin 
		if(irst)
			begin 
				v_cont<=0;
				ovga_vs<=1;
			end
		else 
			begin
				if(v_cont<V_TOTAL) 
					v_cont<=v_cont+1'b1;
				else 
					v_cont<=0;
				if(v_cont<=V_TA-1) 
					ovga_vs<=1'b0;
				else 
					ovga_vs<=1'b1;
			end
	end

3 .图像缩放

截取的部分代码中,amplify_rate是放大倍数,shrink_rate是缩小倍数,h_cont是行计数,v_cont是列计数,也就是说如果amplify_rate=2,则相当于图像的长度(变量:LENGTH)扩展为原来的两倍,而对LENGTH采取除的操作,即除以shrink_rate则相当于将图像的长度缩短;同理对图像的宽度的操作也是如此。

if((!per)&&h_cont<(xpos+H_TA+H_TB+H_TC+(LENGTH*amplify_rate)/shrink_rate) && (h_cont>=xpos+H_TA+H_TB+H_TC) && v_cont<(ypos+V_TA+V_TB+V_TC+(WIDTH*amplify_rate)/shrink_rate)&&(v_cont>=ypos+V_TA+V_TB+V_TC))

4.图像移动

改变读取第一个地址像素值的位置, 即通过控制xpos、ypos来改变首地址读取位置

if((!per)&&h_cont<(xpos+H_TA+H_TB+H_TC+(LENGTH*amplify_rate)/shrink_rate) && (h_cont>=xpos+H_TA+H_TB+H_TC) && v_cont<(ypos+V_TA+V_TB+V_TC+(WIDTH*amplify_rate)/shrink_rate)&&(v_cont>=ypos+V_TA+V_TB+V_TC))

后面还实现了图像的旋转。整个工程文件在下:

https://download.csdn.net/download/wxkhturfun/12111123
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Greate AUK

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值