集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1457|回复: 2

FPGA优化结果占用零资源问题

[复制链接]
shiweicl1314 发表于 2012-5-21 11:36:28 | 显示全部楼层 |阅读模式
我设计了一个LCD1602的程序,但是优化结果占用零个资源,我查看RTL的确生成了实际复杂的电路出来,包括输入输出端口都存在,就是不占用一个LE,下载到板子中也没反应,求高人指点,小弟不胜感激。



module lcd(clk,LCD_Rs,LCD_Rw,LCD_En,LCD_Data);
input clk;
output LCD_Rs,LCD_Rw,LCD_En;
output LCD_Data[7:0];
reg LCD_Rs,LCD_En;
reg[7:0]LCD_Data;


reg DIV_Clk;
reg[5:0]DIV_Cunt;
always@(posedge clk)
  begin   
     
     DIV_Cunt =DIV_Cunt +1'b1;
     if(DIV_Cunt==6'b111111)DIV_Clk =~DIV_Clk;  
  end   


reg[7:0]setp;
reg[1:0]Ctrl;
always@(posedge DIV_Clk)
begin

   case(setp)
   
     8'd0:
          begin
            
             LCD_Rs =1'b0;
             case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h06;
               2'd2: LCD_En =1'b1;
             endcase
          end
         
     8'd1:
          begin
            
             case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h0c;
               2'd2: LCD_En =1'b1;
             endcase
          end
         
     8'd2:
          begin
            
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h14;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd3:
         begin
   
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h38;
               2'd2: LCD_En =1'b1;
            endcase
         end  
         
     8'd4:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h80;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd5:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="w" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd6:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h81;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd7:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="w" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end   
         
     8'd8:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h82;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd9:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="w" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end         
                              
     8'd10:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h83;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd11:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="." +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd12:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h84;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd13:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="s" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end  
         
     8'd14:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h85;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd15:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="h" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end      
         
     8'd16:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h86;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd17:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="i" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end  
         
     8'd18:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h87;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd19:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="w" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end  
         
     8'd20:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h88;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd21:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="e" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd22:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h89;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd23:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="i" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end  
         
     8'd24:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h8a;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd25:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="." +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd26:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h8b;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd27:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="c" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd28:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h8c;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd29:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="o" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end  
         
     8'd30:
          begin
            LCD_Rs =1'b1;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data =8'h8d;
               2'd2: LCD_En =1'b1;
            endcase
          end
         
     8'd31:
          begin
            LCD_Rs =1'b0;
            case(Ctrl)
           
               2'd0: LCD_En =1'b0;
               2'd1: LCD_Data ="m" +8'h30;
               2'd2: LCD_En =1'b1;
            endcase
          end                                      
     
   endcase
   
   
   
   Ctrl =Ctrl +1'b1;
   
   if(Ctrl==2'd3)
     begin
         setp =setp +1'b1;
         Ctrl =2'd0;
         if(setp >8'd32)setp =8'd32;
     end
   
end

assign LCD_Rw =1'b0;

endmodule
 楼主| shiweicl1314 发表于 2012-5-21 11:40:58 | 显示全部楼层
回复 1# shiweicl1314


      if(Ctrl==2'd3)
     begin
         setp =setp +1'b1;
         Ctrl =2'd0;
         //if(setp >8'd32)setp =8'd32;
     end

   我将最下面那条语句注视掉后,资源占用就正常了,但是这样的结果就不是我想要的了。
 楼主| shiweicl1314 发表于 2012-5-21 11:50:58 | 显示全部楼层
问题已经解决了,
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-6-28 23:02 , Processed in 0.066397 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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