集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1383|回复: 4

一个ds18b20的verilog程序,提示有错误,大家帮忙看一下

[复制链接]
jwx1904 发表于 2011-12-25 17:04:25 | 显示全部楼层 |阅读模式
module temperature (clk,dq,
d,cont,temp
);
input clk;//时钟1MHZ
input dq;//数字温度串行输入端口
output d;//控制信号输出端口
output cont;//三态门控制信号
output [9:0] temp;//10为温度值并行输出端口
reg d;
reg cont;
reg [9:0] temp;
reg data;
reg [6:0] num;//时隙计数,70个时钟周期为一个时隙
reg [6:0] count;//一次温度转换和输出技术,70个时隙
reg [9:0] t;





always @(posedge clk)
begin
num = num + 1 ;
if (num > 7'b1000100)
begin num = 7'b0000000;
if (count == 7'b1001011)
begin count = 7'b0000000 ; end
else
begin count = count + 1 ; end
end
else
begin num = num + 1 ; end

//---------------------------------------------------------------
if (count >= 7'b0000000 && count <= 7'b0000110)//reset脉冲
begin data = 0 ; cont = 0 ; end
//---------------------------------------------------------------

else if (count > 7'b0000110 && count <= 7'b0001101)//presenc脉冲
begin cont = 0 ; end
//---------------------------------------------------------------

else if (count == 7'b0001110 || count == 7'b0001111 || count == 7'b0010010 || count == 7'b0010011) ;//skip‘0’空隙
begin
if (num >= 7'b0000000 && num < 7'b0111100)
begin data = 0 ; cont = 1 ; end
else
begin cont = 0 ; end
end

//---------------------------------------------------------------

else if (count == 7'b0010000 || count == 7'b0010001 || count == 7'b0010100 || count == 7'b0010101) ;
begin
if (num >= 7'b0000000 && num < 7'b0001010)
begin data = 0 ; cont = 1 ; end
else
begin cont = 0 ; end
end

//---------------------------------------------------------------

else if (count == 7'b0010110 || count == 7'b0010111 || count == 7'b0011001 || count == 7'b0011010 || count == 7'b0011011 || count == 'b0011101) ;//convert'0'
begin
if (num >= 'b0000000 && num < 'b0111100)
begin data = 0 ; cont = 1 ; end
else
begin cont = 0 ; end
end
//---------------------------------------------------------------

else if (count == 'b0011000 && count == 'b0011100)
begin
if (num >= 'b0000000 && num < 'b00011100)
begin data = 0 ; cont = 0 ; end
else
begin cont = 0 ; end
end

//---------------------------------------------------------------

else if (count == 'b0011110 && count == 'b0100100)//reste
begin data = 0 ; cont = 0 ; end

//---------------------------------------------------------------

else if (count == 'b0100101 && count == 'b0101011)//presence
begin cont = 0 ; end
end
endmodule
 楼主| jwx1904 发表于 2011-12-25 20:56:52 | 显示全部楼层
提示的就是图片里的错误,不过我分析不来,感觉不应该是这个啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?我要注册

x
 楼主| jwx1904 发表于 2011-12-25 21:00:52 | 显示全部楼层
哪位大哥帮忙编译一下,看看错误,谢谢
白开水的噩梦 发表于 2011-12-26 14:14:22 | 显示全部楼层
module temperature (clk,dq,d,cont,temp);
input clk;//时钟1MHZ
input dq;//数字温度串行输入端口
output d;//控制信号输出端口
output cont;//三态门控制信号
output [9:0] temp;//10为温度值并行输出端口
reg d;
reg cont;
reg [9:0] temp;
reg data;
reg [6:0] num;//时隙计数,70个时钟周期为一个时隙
reg [6:0] count;//一次温度转换和输出技术,70个时隙
reg [9:0] t;

always @(posedge clk)
begin
num = num + 1 ;
if (num > 7'b1000100)
        begin
        num = 7'b0000000;
        if (count == 7'b1001011)
        begin count = 7'b0000000 ; end
        else
        begin count = count + 1 ; end
        end
else
        begin num = num + 1 ; end

//---------------------------------------------------------------
if (count >= 7'b0000000 && count <= 7'b0000110)//reset脉冲
begin data = 0 ; cont = 0 ; end
//---------------------------------------------------------------

else if (count > 7'b0000110 && count <= 7'b0001101)//presenc脉冲
begin cont = 0 ; end
//---------------------------------------------------------------

else if (count == 7'b0001110 || count == 7'b0001111 || count == 7'b0010010 || count == 7'b0010011) //skip‘0’空隙
begin
        if (num >= 7'b0000000 && num < 7'b0111100)
        begin data = 0 ; cont = 1 ; end
        else
        begin cont = 0 ; end
end

//---------------------------------------------------------------
else if (count == 7'b0010000 || count == 7'b0010001 || count == 7'b0010100 || count == 7'b0010101)
begin
        if (num >= 7'b0000000 && num < 7'b0001010)
        begin data = 0 ; cont = 1 ; end
        else
        begin cont = 0 ; end
end

//---------------------------------------------------------------

else if (count == 7'b0010110 || count == 7'b0010111 || count == 7'b0011001 || count == 7'b0011010 || count == 7'b0011011 || count == 'b0011101) //convert'0'
begin
        if (num >= 'b0000000 && num < 'b0111100)
        begin data = 0 ; cont = 1 ; end
        else
        begin cont = 0 ; end
end
//---------------------------------------------------------------

else if (count == 'b0011000 && count == 'b0011100)
begin
        if (num >= 'b0000000 && num < 'b00011100)
        begin data = 0 ; cont = 0 ; end
        else
        begin cont = 0 ; end
end

//---------------------------------------------------------------

else if (count == 'b0011110 && count == 'b0100100)//reste
begin data = 0 ; cont = 0 ; end

//---------------------------------------------------------------

else if (count == 'b0100101 && count == 'b0101011)//presence
begin cont = 0 ; end
end
endmodule
改好了,编译通过
白开水的噩梦 发表于 2011-12-26 14:14:42 | 显示全部楼层
你只是犯了点小错误
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-8-19 23:40 , Processed in 0.087338 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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