|
各位大侠求教求教
我大四了,菜鸟一只在做综合课程设计。快要验收了。杯具。
负责的是接口,做了个鼠标和屏,想连起来的但是发现屏刷起来有问题。
那屏是640×480的,如果把像素值都存在RAM里就太大了,想单独给鼠标像素弄个模块,然后刷屏的时候当刷到鼠标位置的时候再把像素取出来。
但是问题出现了:譬如说水平刷屏的时候要到位置200的时候变个像素值,再到300的时候变个像素值,就可以。
但是如果把两者距离变小从200到250整个逻辑就乱掉了。。
很奇怪,感觉这个屏应该是你数到那个点就可以变到哪个点的哈。泪。
不知有没有做过液晶屏的大侠在?这究竟是因为所写代码的问题导致时序混乱还是本来就不容许这样子换来换去刷屏的?难道必须要整个RAM这样刷么?可是这样占内存又太大了哈。
先谢下各位了。
下面是刷屏水平 竖直 和行有效的Verilog代码:(换的时候我是直接判断HCount的大小然后给颜色端口赋值的)
always @(posedge TLcdClk or negedge RST)
begin
if(!RST )
HCount <= 0;
else
begin
HCount <= HCount+1;
if(HCount == HDCount -1)
HSync <= #1 1'b1;
else if(HCount == HTCount -1)
begin
HSync <= #1 1'b0;
HCount <=#1 'b0;
end
end
end
always @(posedge HSync or negedge RST)
begin
if(!RST)
VCount <= 0;
else
begin
VCount <= VCount + 1;
if(VCount == VDCount -1)
begin
VSync <= #1 1'b1;
end
else if(VCount == VTCount - 1)
begin
VSync <= #1 1'b0;
VCount <= #1 'b0;
end
end
end
always @( posedge TLcdClk or negedge RST )
begin
if(!RST)
EnCount <= 0;
else if (!HSYNC)
EnCount <= 0;
else
begin
EnCount <= EnCount+1;
if(EnCount == EnDCount - 1)
Enab <= #1 1'b1;
else
if(EnCount == EnTCount -1)
begin
Enab <= #1 1'b0;
EnCount <= #1 'b0;
end
end
end
|
|