3568|2

525

帖子

235

TA的资源

版主

楼主
 

这个哪里出错了,有用过的给讲讲 [复制链接]

今天调了一天TLC549,从网上找到个程序是可以用的,然后自己写了一个,死活不对。希望有用过的给讲一下:
module TLC549
(
input sys_clk,
input sys_rstn,

output AD_Cs,
output AD_Clk,
input  AD_In,
output reg [7:0] Data_Out
);
           

reg[6:0] Count;
reg En_Count;
always @(posedge sys_clk or negedge sys_rstn)
begin
  if(!sys_rstn)
  begin
      Count <= 7'b0;
  end
  else if(Count==7'd25)
        Count <= 7'd0;
  else if(En_Count)
      Count <= Count+1'b1;
  else
        Count <=7'd0;
end

reg [5:0] i;
reg AD_Cs_r;
reg AD_Clk_r;
reg [7:0] Data_Out_r;
always@(posedge sys_clk or negedge sys_rstn)
    if(!sys_rstn)
        begin
            i<=6'd0;
            AD_Cs_r<=1'b1;
            AD_Clk_r<=1'b0;
            Data_Out_r<=8'd0;
            En_Count<=1'b0;
        end
    else
        case(i)
            0,1,2,3:
            if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
            else begin En_Count<=1'b1;AD_Cs_r<=1'b0;end
            4,6,8,10,12,14,16,18:
            if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
            else begin En_Count<=1'b1;Data_Out_r<={Data_Out_r[6:0],AD_In};AD_Clk_r<=1'b1;end
            5,7,9,11,13,15,17,19:
            if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
            else begin En_Count<=1'b1;AD_Clk_r<=1'b0;end
            20:
            if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
            else begin En_Count<=1'b1;AD_Cs_r<=1'b1;end
            default:
            if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
            else begin En_Count<=1'b1;Data_Out<=Data_Out_r;end
        endcase
   
assign AD_Clk=AD_Clk_r;
assign AD_Cs=AD_Cs_r;

endmodule
此帖出自FPGA/CPLD论坛

最新回复

kdy
不知道哪里不对,故障现象是什么 粗粗看了一下,这个思路和风格有些C化 一个问题是:在时钟sys_clk 来时 else if(Count==7'd25)         Count   详情 回复 发表于 2013-9-24 23:14
点赞 关注
 

回复
举报

581

帖子

0

TA的资源

五彩晶圆(初级)

沙发
 
不知道哪里不对,故障现象是什么
粗粗看了一下,这个思路和风格有些C化
一个问题是:在时钟sys_clk 来时
else if(Count==7'd25)
        Count <= 7'd0;

if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
            else begin En_Count<=1'b1;Data_Out_r<={Data_Out_r[6:0],AD_In};AD_Clk_r<=1'b1;end
这二者间可能有些问题。
请参考下例子的代码风格
此帖出自FPGA/CPLD论坛

点评

谢谢kdy,找到问题了: 4,6,8,10,12,14,16,18: if(Count==7\'d25) begin En_Count  详情 回复 发表于 2013-9-25 11:35

赞赏

1

查看全部赞赏

个人签名Net:Wxeda.taobao.com
QQ:1035868547
Blog:https://home.eeworld.com.cn/space-uid-390804.html
 
 

回复

525

帖子

235

TA的资源

版主

板凳
 

回复 沙发kdy 的帖子

谢谢kdy,找到问题了:
4,6,8,10,12,14,16,18:
if(Count==7'd25) begin En_Count<=1'b0;i<=i+1'b1;end
else begin En_Count<=1'b1;Data_Out_r<={Data_Out_r[6:0],AD_In};AD_Clk_r<=1'b1;end
这个地方出问题了,Data_Out_r<={Data_Out_r[6:0],AD_In};这条语句应该只执行一边就可以了,可是我的写法在等待期间一直在执行,所以造成了错误,我整理下,去咱们分区发个帖。
此帖出自FPGA/CPLD论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表