verilog 倍频程序

verilog 倍频程序,第1张

一般的FPGA里面有多个PLL, DLL模块, 用于产生高质量时钟信号,供特定空并单元使用.

基本的备频原理是由模拟电斗旁迹路提取低频的高次谐波, 再整形输出. 高次谐波衰减启空厉害,备频效率都不高.1Hz到4kHz是不可能一次完成的. 建议买个24MHz晶振挂在适当的时钟脚, 然后利用PLL分频.

module freq_divide(

input clk, // 输入时钟

input rst, // 复位信号

output reg clk_3div , //3分频时钟

output reg clk_5div , /游耐/

output reg clk_6div ,

output reg clk_10div ,

output reg clk_63div

)

reg[2:0] clk_cnt3

reg[3:0] clk_cnt5

reg[3:0] clk_cnt6

reg[4:0] clk_cnt10

reg[7:0] clk_cnt63

always@(posedge clk or negedge clk or posedge rst) //3分频

begin

if(rst)

clk_cnt3 <= 3'd0

else if(clk_cnt3 == 3'd5)

clk_cnt3 <= 3'd0

else

clk_cnt3 <= clk_cnt3 +3'd1

end

always@(posedge clk or negedge clk or posedge rst)

begin

if(rst)

clk_3div <= 1'b0

else if((clk_cnt3 >=0) &&(clk_cnt3 <3))

clk_3div <= 1'b1

else

clk_3div <= 1'b0

end

always@(posedge clk or negedge clk or posedge rst) //5分频

begin

if(rst)

clk_cnt5 <姿坦= 4'd0

else if(clk_cnt3 == 4'd9)

clk_cnt5 <= 4'd0

else

clk_cnt5 <= clk_cnt5 + 4'd1

end

always@(posedge clk or negedge clk or posedge rst)

begin

if(rst)

clk_5div <= 1'b0

else if((clk_cnt5 >=0) &&(clk_cnt5 <5))

clk_5div <= 1'b1

else

clk_5div <= 1'b0

end

always@(posedge clk or negedge clk or posedge rst) //6分频

begin

if(rst)

clk_cnt6 <= 3'd0

else if(clk_cnt6 == 4'd11)

clk_cnt6 <= 3'd0

else

clk_cnt6 <= clk_cnt6 +4'd1

end

always@(posedge clk or negedge clk or posedge rst)

begin

if(rst)

clk_6div <= 1'b0

else if((clk_cnt6 >迹磨桐=0) &&(clk_cnt6 <6))

clk_6div <= 1'b1

else

clk_6div <= 1'b0

end

always@(posedge clk or negedge clk or posedge rst) //10分频

begin

if(rst)

clk_cnt10 <= 5'd0

else if(clk_cnt10 == 5'd19)

clk_cnt10 <= 5'd0

else

clk_cnt10 <= clk_cnt10 +5'd1

end

always@(posedge clk or negedge clk or posedge rst)

begin

if(rst)

clk_10div <= 1'b0

else if((clk_cnt10 >=0) &&(clk_cnt10 <10))

clk_10div <= 1'b1

else

clk_10div <= 1'b0

end

always@(posedge clk or negedge clk or posedge rst) //63分频

begin

if(rst)

clk_cnt63 <= 8'd0

else if(clk_cnt63 == 8'd125)

clk_cnt63 <= 8'd0

else

clk_cnt63 <= clk_cnt63 +8'd1

end

always@(posedge clk or negedge clk or posedge rst)

begin

if(rst)

clk_63div <= 1'b0

else if((clk_cnt63 >=0) &&(clk_cnt63 <63))

clk_63div <= 1'b1

else

clk_63div <= 1'b0

end

endmodule

P-SCAN YPB PR 数字倍频扫描系统

RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色,是目前运用最广的颜色系统之一。

RGB色彩模式使用RGB模型为图像中每一个像素的RGB分量分配一个0~255范围内的强度值。例如:纯红色R值为255,G值为0,B值为0;灰色的R、G、B三个值相等(除了0和255);白色的R、G、B都为255;黑色的R、G、B都为0。RGB图像只使用三种颜色,就可以使它们按照不同的比例混合,在屏幕上重现16777216种颜色。

在 RGB 模式下,每种 RGB 成分都可使用从 0(黑色)到 255(白色)的值。 例如,亮红色使用 R 值 246、G 值 20 和 B 值 50。 当所有三种成分值相等时,产生灰色阴影。 当所有成分的值均为 255 时,结果是纯白色;当该值为 0 时,结果是纯黑色。

应用

目前的显示器大都是采用了RGB颜色标准,在显示器上,是通过电子q打在屏幕的红、绿、蓝三色发光极上来产生色彩的,目前的电脑锋山一般都能显示32位颜色,约有一百万种以上的颜色。

原理

RGB是从颜色发光的原理来设计定的,通俗点说它的颜色混合方式就好像有红、绿、蓝三盏灯,当它们的光相互叠合的时候,色彩相混,而亮度却等于两者亮度之总和(两盏灯的亮度嘛!),越混合亮度越高,即搜基汪加法混合。

有色光可被无色光冲淡并变亮。如蓝色光与白光相遇,结果是产生更加明亮的浅蓝色光。知道它的混合原理后,在软件中设定颜色就容易理解了。

红、绿、蓝三盏灯的叠加情况,中心三色最亮的叠加区为白色,加法混合的特点:越叠加越明亮。

红、绿、蓝三个颜色通道每种色各分为世仔255阶亮度,在0时“灯”最弱——是关掉的,而在255时“灯”最亮。当三色数值相同时为无色彩的灰度色,而三色都为255时为最亮的白色,都为0时为黑色。

RGB 颜色称为加成色,因为您通过将 R、G 和 B 添加在一起(即所有光线反射回眼睛)可产生白色。 加成色用于照明光、电视和计算机显示器。 例如,显示器通过红色、绿色和蓝色荧光粉发射光线产生颜色。绝大多数可视光谱都可表示为红、绿、蓝 (RGB) 三色光在不同比例和强度上的混合。 这些颜色若发生重叠,则产生青、洋红和黄。

[编辑本段]语法RGB

( red,green,blue )

参数red:integer类型,指定颜色中的红色分量强度,有效值在0到255之间green:integer类型,指定颜色中的绿色分量强度,有效值在0到255之间blue:integer类型,指定颜色中的蓝色分量强度,有效值在0到255之间返回值Long。函数执行成功时返回由指定分量确定的颜色,用长整数表示。发生错误时返回-1。如果任何参数的值为NULL,RGB()函数返回NULL。

用法RGB()函数使用下述公式计算表示颜色的长整数:65536 * Blue+ 256 * Green+ Red其中,Blue代表蓝色分量,Green代表绿色分量,Red代表红色分量。各分量中,数值越小,亮度越低,数值越大,亮度越高。例如,RGB ( 0, 0, 0 )为黑色(亮度最低),RGB ( 255, 255,255 )为白色(亮度最高)。

[编辑本段]RGB格式

对一种颜色进行编码的方法统称为“颜色空间”或“色域”。用最简单的话说,世界上任何一种颜色的“颜色空间”都可定义成一个固定的数字或变量。RGB(红、绿、蓝)只是众多颜色空间的一种。采用这种编码方法,每种颜色都可用三个变量来表示-红色绿色以及蓝色的强度。记录及显示彩色图像时,R GB是最常见的一种方案。但是,它缺乏与早期黑白显示系统的良好兼容性。因此,件多电子电器厂商普遍采用的做法是,将RGB转换成YUV 颜色空同,以维持兼容,再根据需要换回RGB格式,以便在电脑显示器上显示彩色图形。

由于网页(WEB)是基于计算机浏览器开发的媒体,所以颜色以光学颜色RGB(红、绿、蓝)为主。 网页颜色是以16进制代码表示,一般格式为#ZYZABC (字母用数字代替 )如黑色是三个颜色为0,在网页代码便是:#000000。当颜色代码为#XXYYZZ时,可以用#XYZ表示,如#135与#113355表示同样的颜色。

各种RGB格式

RGB1、RGB4、RGB8都是调色板类型的RGB格式,在描述这些媒体类型的格式细节时,通常会在BITMAPINFOHEADER数据结构后面跟着一个调色板(定义一系列颜色)。它们的图像数据并不是真正的颜色值,而是当前像素颜色值在调色板中的索引。以RGB1(2色位图)为例,比如它的调色板中定义的两种颜色值依次为0x000000(黑色)和0xFFFFFF(白色),那么图像数据001101010111…(每个像素用1位表示)表示对应各像素的颜色为:黑黑白白黑白黑白黑白白白…。

¨ RGB565使用16位表示一个像素,这16位中的5位用于R,6位用于G,5位用于B。程序中通常使用一个字(WORD,一个字等于两个字节)来 *** 作一个像素。当读出一个像素后,这个字的各个位意义如下:

高字节 低字节

R R R R R G G G G G G B B B B B

可以组合使用屏蔽字和移位 *** 作来得到RGB各分量的值:

#define RGB565_MASK_RED 0xF800

#define RGB565_MASK_GREEN 0x07E0

#define RGB565_MASK_BLUE 0x001F

R = (wPixel &RGB565_MASK_RED) >>11// 取值范围0-31

G = (wPixel &RGB565_MASK_GREEN) >>5// 取值范围0-63

B = wPixel &RGB565_MASK_BLUE// 取值范围0-31

¨ RGB555是另一种16位的RGB格式,RGB分量都用5位表示(剩下的1位不用)。使用一个字读出一个像素后,这个字的各个位意义如下:

高字节 低字节

X R R R R G G G G G B B B B B (X表示不用,可以忽略)

可以组合使用屏蔽字和移位 *** 作来得到RGB各分量的值:

#define RGB555_MASK_RED 0x7C00

#define RGB555_MASK_GREEN 0x03E0

#define RGB555_MASK_BLUE 0x001F

R = (wPixel &RGB555_MASK_RED) >>10// 取值范围0-31

G = (wPixel &RGB555_MASK_GREEN) >>5// 取值范围0-31

B = wPixel &RGB555_MASK_BLUE// 取值范围0-31

¨ RGB24使用24位来表示一个像素,RGB分量都用8位表示,取值范围为0-255。注意在内存中RGB各分量的排列顺序为:BGR BGR BGR…。通常可以使用RGBTRIPLE数据结构来 *** 作一个像素,它的定义为:

typedef struct tagRGBTRIPLE {

BYTE rgbtBlue// 蓝色分量

BYTE rgbtGreen// 绿色分量

BYTE rgbtRed// 红色分量

} RGBTRIPLE

¨ RGB32使用32位来表示一个像素,RGB分量各用去8位,剩下的8位用作Alpha通道或者不用。(ARGB32就是带Alpha通道的RGB32。)注意在内存中RGB各分量的排列顺序为:BGRA BGRA BGRA…。通常可以使用RGBQUAD数据结构来 *** 作一个像素,它的定义为:

typedef struct tagRGBQUAD {

BYTE rgbBlue// 蓝色分量

BYTE rgbGreen// 绿色分量

BYTE rgbRed// 红色分量

BYTE rgbReserved// 保留字节(用作Alpha通道或忽略)

} RGBQUAD。

[编辑本段]主要算法

public void paint(Graphics g)

{

h.clearRect(0, 0, 370, 420)

h.setColor(Color.black)

h.drawLine(100, 100, 355, 100)

h.drawLine(100, 100, 100, 355)

h.drawLine(100, 355, 355, 355)

h.drawLine(355, 100, 355, 355)

h.drawLine(100, 100, 50, 150)

h.drawLine(355, 100, 305, 150)

h.drawLine(355, 355, 305, 405)

h.drawLine(100, 355, 50, 405)

h.drawLine(50, 150, 50, 405)

h.drawLine(50, 150, 305, 150)

h.drawLine(305, 150, 305, 405)

h.drawLine(50, 405, 305, 405)

h.setColor(Color.red)

h.fillOval(45, 400, 10, 10)

h.setColor(Color.green)

h.fillOval(350, 350, 10, 10)

h.setColor(Color.blue)

h.fillOval(95, 95, 10, 10)

h.setColor(Color.cyan)

h.fillOval(350, 95, 10, 10)

h.setColor(Color.magenta)

h.fillOval(45, 145, 10, 10)

h.setColor(Color.yellow)

h.fillOval(300, 400, 10, 10)

h.setColor(Color.black)

h.fillOval(95, 350, 10, 10)

h.drawOval(300, 145, 10, 10)

h.setColor(c)

int i = (90 + gc) - (int)(0.19600000000000001D * (double)rc)

int j = (345 - bc) + (int)(0.19600000000000001D * (double)rc)

h.fillRect(i, j, 20, 20)

h.setColor(Color.black)

h.drawRect(i, j, 20, 20)

g.drawImage(offimg, 0, 0, this)

g.setColor(Color.red)

g.setFont(fonsig)

g.drawString

}


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/12412944.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-23
下一篇2023-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存