搜索
bottom↓
回复: 5

谁指出附AHDL语言程序问题我出100块钱的饭钱。

[复制链接]

出390入22汤圆

发表于 2017-7-29 16:47:41 | 显示全部楼层 |阅读模式
本帖最后由 liudingding 于 2017-7-29 16:49 编辑


本程序是EPM240的液晶驱动程序,能实现CPU写入液晶显示,但是现在只改变部分引脚的逻辑,如CS1、CS2是专门输出测试信号的引脚,如果它们改输出别的信号如FRV或LIV,就是CS1=LIV或CS1=FRV等信号液晶黑屏,直接导致我没法调试。
AHDL我能看懂,能用AHDL就用AHDL,实在不行就找人吃顿饭用verilog HDL写。


SUBDESIGN CPLD
(
   WR,RD,ALE,A[15..8],K4           :  INPUT;   
   RWR,ROE                         :  OUTPUT;  
   D[7..0],DR[15..0]               :  BIDIR;   
   PCK,LIV,FRV,S[9..0],IN          :  INPUT;   
   RA[17..0],INT3,CS1,CS2,OUT,24M  :  OUTPUT;
   PCLK,HS,VS                      :  OUTPUT;         
)
VARIABLE
FA[7..0]:    DFF;
FB[15..0]:   DFF;
FC[20..0]:   DFF;
FE[7..0]:    DFF;
FF[7..0]:    DFF;

FH[9..0]:    DFF;
FI[9..0]:   DFF;
FJ[3..0]:    DFF;
FK[3..0]:    DFF;
FL[20..0]:   DFF;
SM[20..0]:   DFF;
SY[20..0]:   DFF;
SS       :   DFF;

S0,S1,S2,S3: TRI;
SK,HH,VV :   TRI;
QY,HY,DE,VE,DEC,YH,JS:TRI;
DT :         TRI;
AC[17..0]:   TRI;
AD[15..0]:   TRI;
DA[15..8]:   TRI;
DD[15..0]:   TRI;
DLS[7..0]:    TRI;

CK,QL,Q,OU : TRI;
RR,ZD:       TRI;
HQ,HE:       TRI;
V[3..0]:     TRI;
BEGIN
FH[]         = FH[]+1;
FH[].CLK     = IN;
FH[].CLRN    =!JS;
table        
   FH[]       =>QY, HY, DEC,YH, JS;
   0          => 1,  0,  0,  0,  0;
   48         => 0,  1,  0,  0,  0;      % 48        %
   88         => 0,  0,  1,  0,  0;      % 88        %
   850        => 0,  0,  0,  1,  0;      %762+88=850 %
   928        => 0,  0,  0,  0,  1;      % 928       %
end table;
  FJ[]         = FJ[]+1;
  FJ[].CLK     = HY#DEC#YH;
  FJ[].CLRN    =!QY;
table        
   FJ[]       => HH, HE;
    0         => 1,  0;
    2         => 0,  1;
end table;
  HS          =!HH;
  
DE           = HE&VE;
FI[]         = FI[]+1;
FI[].CLK     = QY;
FI[].CLRN    =!V3;

table        
   FI[]       =>V0, V1, V2, V3;
   0          => 1,  0,  0,  0;
   3          => 0,  1,  0,  0;      % 03        %
   29         => 0,  0,  1,  0;      % 29        %
   525        => 0,  0,  0,  1;      % 525       %
end table;
  FK[]         = FK[]+1;
  FK[].CLK     = V1#V2;
  FK[].CLRN    =!V0;
table        
   FK[]       =>VV, VE;
    0         => 1,  0;
    2         => 0,  1;
end table;
  VS          =!VV;

  PCLK         =!OUT;
  OUT          =!IN;
  FF[]         = FF[]+1;
  FF[].CLK     = IN;
  24M          = FF[0];

  CK           = PCK#ZD;  %&FRV&LIV  %
  INT3         = OU&!FRV;

  FE[]         = FE[]+1;
  FE[].CLK     =!FRV;
  FE[].CLRN    =!QL;
  QL           = Q&!WR;
table        
  FE[]         => OU;
  H"2"         => 1 ;
end table;
  
  
  RA[0]        = FE[1];
  
  SY[7..0]     = D[7..0];
  SY[7..0].CLK = S0&!WR;
  SY[15..8]    = D[7..0];
  SY[10..8].CLK= S1&!WR;
  SY[20..16]   = D[4..0];
  SY[20..16].CLK=S2&!WR;

  SM[]         = SM[]+1;
  SM[].CLK     = PCK&FRV;
  SM[].CLRN    = FRV;
if(SY[]==SM[])then
  SK           = VCC;
end if;
  SS           =!SS;
  SS.CLK       = SK;
  SS.CLRN      = FRV;
  
   
table        
  FC[]         =>ZD;
  H"94D40"     => 1;  %B2980 96000 %
end table;
  FA[]         = D[];
  FA[].CLK     =!ALE;
  AC[7..0]     = FA[7..0];
  AC[15..8]    = A[15..8];
  AC[17..16]   = 0;
% AC[17..0].CLRN    =!QL; %
  
  D[]          = DLS[];
  DLS[]        = DR[7..0];
  DLS[].OE     =!(!WR#ALE);
   

  FB[7..0]     = D[7..0];
  FB[7..0].CLK = WR;
  FB[15..8]    = D[7..0];
  FB[15..8].CLK= WR;
  DD[15..0]    = FB[15..0];
  DR[15..0]    = DD[15..0];
  DD[].OE      =!WR;
  
!RWR          =!WR;
!ROE          = RWR;
  CS1          = FL[2];
  CS2          = FC[2];

  FC[]         = FC[]+1;  % 写地址  %
  FC[].CLK     = PCK&OU#DT;
  FC[].CLRN    = FRV;
if
  (FC[]==1219200)
then
   DT=VCC;
end if;
  FL[]         = FL[]+1;
  FL[].CLK     = OUT&HE;
  FL[].CLRN    =!VE;
if(K4==VCC)then
  RA[17..0]    = AC[17..0];   %  FC写地址   %
else                         %  FL读地址   %
  RA[17..0]    = FL[17..0];
end if;
  % %
table        
   AC[15..0]  => Q, S0, S1, S2, S3;
   H"FFF3"    => 0,  1,  0,  0,  0;
   H"FFF4"    => 0,  0,  1,  0,  0;
   H"FFF5"    => 0,  0,  0,  1,  0;
   H"FFF6"    => 0,  0,  0,  0,  1;
   H"FFF7"    => 1,  0,  0,  0,  0;
  end table;
END;

出390入22汤圆

 楼主| 发表于 2017-7-30 10:17:55 | 显示全部楼层
我认为该程序可能有我习惯性的错,这种错误我一直持续使用

出0入0汤圆

发表于 2017-7-30 11:14:38 | 显示全部楼层
如果只是想用CS1和CS2看FRV或LIV的话,可以试试下面的代码。实现风格确实不太好,你如果可以说详细点,我可以帮你改,当然,纯交流,不为钱。
SUBDESIGN CPLD
(
    WR,RD,ALE,A[15..8],K4           :  INPUT;   
    RWR,ROE                         :  OUTPUT;  
    D[7..0],DR[15..0]               :  BIDIR;   
    PCK,LIV,FRV,S[9..0],IN          :  INPUT;   
    RA[17..0],INT3,CS1,CS2,OUT,24M  :  OUTPUT;
    PCLK,HS,VS                      :  OUTPUT;         
)
VARIABLE
FA[7..0]:    DFF;
FB[15..0]:   DFF;
FC[20..0]:   DFF;
FE[7..0]:    DFF;
FF[7..0]:    DFF;

FH[9..0]:    DFF;
FI[9..0]:    DFF;
FJ[3..0]:    DFF;
FK[3..0]:    DFF;
FL[20..0]:   DFF;
SM[20..0]:   DFF;
SY[20..0]:   DFF;
SS       :   DFF;
LIV_D:       DFF;
FRV_D:       DFF;

S0,S1,S2,S3: TRI;
SK,HH,VV :   TRI;
QY,HY,DE,VE,DEC,YH,JS:TRI;
DT :         TRI;
AC[17..0]:   TRI;
AD[15..0]:   TRI;
DA[15..8]:   TRI;
DD[15..0]:   TRI;
DLS[7..0]:    TRI;

CK,QL,Q,OU : TRI;
RR,ZD:       TRI;
HQ,HE:       TRI;
V[3..0]:     TRI;
BEGIN
FH[]         = FH[]+1;
FH[].CLK     = IN;
FH[].CLRN    =!JS;
table        
    FH[]       =>QY, HY, DEC,YH, JS;
    0          => 1,  0,  0,  0,  0;
    48         => 0,  1,  0,  0,  0;      % 48        %
    88         => 0,  0,  1,  0,  0;      % 88        %
    850        => 0,  0,  0,  1,  0;      %762+88=850 %
    928        => 0,  0,  0,  0,  1;      % 928       %
end table;
   FJ[]         = FJ[]+1;
   FJ[].CLK     = HY#DEC#YH;
   FJ[].CLRN    =!QY;
table        
    FJ[]       => HH, HE;
     0         => 1,  0;
     2         => 0,  1;
end table;
   HS          =!HH;
   
DE           = HE&VE;
FI[]         = FI[]+1;
FI[].CLK     = QY;
FI[].CLRN    =!V3;

table        
    FI[]       =>V0, V1, V2, V3;
    0          => 1,  0,  0,  0;
    3          => 0,  1,  0,  0;      % 03        %
    29         => 0,  0,  1,  0;      % 29        %
    525        => 0,  0,  0,  1;      % 525       %
end table;
   FK[]         = FK[]+1;
   FK[].CLK     = V1#V2;
   FK[].CLRN    =!V0;
table        
    FK[]       =>VV, VE;
     0         => 1,  0;
     2         => 0,  1;
end table;
   VS          =!VV;

   PCLK         =!OUT;
   OUT          =!IN;
   FF[]         = FF[]+1;
   FF[].CLK     = IN;
   24M          = FF[0];

   CK           = PCK#ZD;  %&FRV&LIV  %
   INT3         = OU&!FRV;

   FE[]         = FE[]+1;
   FE[].CLK     =!FRV;
   FE[].CLRN    =!QL;
   QL           = Q&!WR;
table        
   FE[]         => OU;
   H"2"         => 1 ;
end table;
   
   
   RA[0]        = FE[1];
   
   SY[7..0]     = D[7..0];
   SY[7..0].CLK = S0&!WR;
   SY[15..8]    = D[7..0];
   SY[10..8].CLK= S1&!WR;
   SY[20..16]   = D[4..0];
   SY[20..16].CLK=S2&!WR;

   SM[]         = SM[]+1;
   SM[].CLK     = PCK&FRV;
   SM[].CLRN    = FRV;
if(SY[]==SM[])then
   SK           = VCC;
end if;
   SS           =!SS;
   SS.CLK       = SK;
   SS.CLRN      = FRV;
  
LIV_D          = LIV;
LIV_D.CLK      = IN;

FRV_D          = FRV;
FRV_D.CLK      = IN;
   
table        
   FC[]         =>ZD;
   H"94D40"     => 1;  %B2980 96000 %
end table;
   FA[]         = D[];
   FA[].CLK     =!ALE;
   AC[7..0]     = FA[7..0];
   AC[15..8]    = A[15..8];
   AC[17..16]   = 0;
% AC[17..0].CLRN    =!QL; %
   
   D[]          = DLS[];
   DLS[]        = DR[7..0];
   DLS[].OE     =!(!WR#ALE);
     

   FB[7..0]     = D[7..0];
   FB[7..0].CLK = WR;
   FB[15..8]    = D[7..0];
   FB[15..8].CLK= WR;
   DD[15..0]    = FB[15..0];
   DR[15..0]    = DD[15..0];
   DD[].OE      =!WR;
   
!RWR          =!WR;
!ROE          = RWR;
   CS1          = LIV_D;
   CS2          = FRV_D;

   FC[]         = FC[]+1;  % 写地址  %
   FC[].CLK     = PCK&OU#DT;
   FC[].CLRN    = FRV;
if
   (FC[]==1219200)
then
    DT=VCC;
end if;
   FL[]         = FL[]+1;
   FL[].CLK     = OUT&HE;
   FL[].CLRN    =!VE;
if(K4==VCC)then
   RA[17..0]    = AC[17..0];   %  FC写地址   %
else                         %  FL读地址   %
   RA[17..0]    = FL[17..0];
end if;
   % %
table        
    AC[15..0]  => Q, S0, S1, S2, S3;
    H"FFF3"    => 0,  1,  0,  0,  0;
    H"FFF4"    => 0,  0,  1,  0,  0;
    H"FFF5"    => 0,  0,  0,  1,  0;
    H"FFF6"    => 0,  0,  0,  0,  1;
    H"FFF7"    => 1,  0,  0,  0,  0;
   end table;
END;

出390入22汤圆

 楼主| 发表于 2017-7-30 13:09:38 | 显示全部楼层
本帖最后由 liudingding 于 2017-7-30 18:59 编辑
FPGA_WALKER 发表于 2017-7-30 11:14
如果只是想用CS1和CS2看FRV或LIV的话,可以试试下面的代码。实现风格确实不太好,你如果可以说详细点,我可 ...


谢谢楼上关心,但是不行呀,CS1,CS2不能换别的输出值,换了液晶就黑屏
,这里面可能有我的习惯性错误,就是说这些年来一直把这错误当规则来使用

出0入0汤圆

发表于 2017-7-30 16:19:34 | 显示全部楼层
这么说来明显是板子上cs1/cs2接了别的东西,要用到,而不是你说的只是测试用,查查板子吧。如果只是测试用,cs1/cs2随便怎么改,即使删除,也不会影响功能。

出390入22汤圆

 楼主| 发表于 2017-7-31 09:48:24 | 显示全部楼层
sme 发表于 2017-7-30 16:19
这么说来明显是板子上cs1/cs2接了别的东西,要用到,而不是你说的只是测试用,查查板子吧。如果只是测试用 ...

我不放心又看了看PCB文件,cS1,CS2从EPM240两侧引出,不可能和别的线短路,即使短路,也不会两个短路点,这两个端子纯碎接示波器测试用的。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-20 05:54

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表