中易网

FPGA采集多路温度,买了一块FPGA开发板,芯片EP1C3T144C8.温度传感器用DS18B20,Verilog编程怎么写,求助

答案:4  悬赏:20  
解决时间 2021-03-14 13:35
FPGA采集多路温度,买了一块FPGA开发板,芯片EP1C3T144C8.温度传感器用DS18B20,Verilog编程怎么写,求助
最佳答案
其实很简单,先看硬件原理图,弄懂信号流向。再看DS18B20的数据手册(Datasheet),注意建立时间和保持时间(以防后面需要做时序约束)。然后看DS18B20各个功能的时序图。严格控制FPGA按照时序图与DS18B20通信。你只需模仿出主机方(HOST)的时序即可,设备方(Device)时序图即为DS18B20通信时序。只要注意好信号的读写方向(一般是用TRI控制信号流向),写个FSM状态机就很随意的完成基本的通信了。
全部回答
三根线, 温度传感器用DS18B20 quartusII软件 编程。 再看看别人怎么说的。
Verilog编程,quartusII软件,知道开发板对应硬件接口就可以啦
第一个文件:ds18b20.v `timescale 1ns / 1ps module ds18b20 ( clk, chipselect, read_n, //input readdata, //output dio ); //inout input clk, chipselect, read_n; output [15:0] readdata; inout dio; reg [31:0] ro=32'hbecc44cc; reg [15:0] ri; reg [15:0] pout; reg [ 5:0] count; reg [12:0] cnt; reg dout; wire clk781_25khz; assign clk781_25khz=count[5]; always @(posedge clk) count<=count+1'b1; always @(posedge clk781_25khz) cnt<=cnt+1'b1; always @(posedge cnt[12]) pout<=ri; assign readdata=(chipselect & ~read_n)? pout : 16'b0; reg reset,lo, hi,rd; always @(posedge cnt[0]) reset<=cnt[12]|cnt[10]|cnt[9]; always @(posedge cnt[0]) lo <=|cnt[5:1] | ~cnt[10]; always @(posedge cnt[0]) hi <=&cnt[5:1] | ~cnt[10]; always @(posedge cnt[0]) rd <=cnt[3]|cnt[4]|cnt[5]|~cnt[10]|cnt[11]|~cnt[12]; always @(negedge lo or posedge cnt[12]) if (cnt[12]==1) ro<=32'hbecc44cc; else {ro[30:0],dout} <= ro; always @(posedge rd) ri <= {dio,ri[15:1]}; assign dio=reset&(hi|(lo&dout))?1'bz:1'b0; endmodule 第二个文件:ds18b20_hw.tcl # TCL File Generated by Component Editor 11.0 # Mon Dec 12 00:54:43 CST 2011 # DO NOT MODIFY # +----------------------------------- # | # | ds18b20 "ds18b20" v1.0 # | null 2011.12.12.00:54:43 # | # | # | D:/myip11/ds18b20.v # | # | ./ds18b20.v syn, sim # | # +----------------------------------- # +----------------------------------- # | request TCL package from ACDS 11.0 # | package require -exact sopc 11.0 # | # +----------------------------------- # +----------------------------------- # | module ds18b20 # | set_module_property NAME ds18b20 set_module_property VERSION 1.0 set_module_property INTERNAL false set_module_property OPAQUE_ADDRESS_MAP true set_module_property DISPLAY_NAME ds18b20 set_module_property TOP_LEVEL_HDL_FILE ds18b20.v set_module_property TOP_LEVEL_HDL_MODULE ds18b20 set_module_property INSTANTIATE_IN_SYSTEM_MODULE true set_module_property EDITABLE true set_module_property ANALYZE_HDL TRUE set_module_property STATIC_TOP_LEVEL_MODULE_NAME "ds18b20" set_module_property FIX_110_VIP_PATH false # | # +----------------------------------- # +----------------------------------- # | files # | add_file ds18b20.v {SYNTHESIS SIMULATION} # | # +----------------------------------- # +----------------------------------- # | parameters # | # | # +----------------------------------- # +----------------------------------- # | display items # | # | # +----------------------------------- # +----------------------------------- # | connection point clock # | add_interface clock clock end set_interface_property clock clockRate 0 set_interface_property clock ENABLED true add_interface_port clock clk clk Input 1 # | # +----------------------------------- # +----------------------------------- # | connection point avalon_slave_0 # | add_interface avalon_slave_0 avalon end set_interface_property avalon_slave_0 addressAlignment NATIVE set_interface_property avalon_slave_0 addressUnits WORDS set_interface_property avalon_slave_0 associatedClock clock set_interface_property avalon_slave_0 associatedReset clock_reset set_interface_property avalon_slave_0 burstOnBurstBoundariesOnly false set_interface_property avalon_slave_0 explicitAddressSpan 0 set_interface_property avalon_slave_0 holdTime 0 set_interface_property avalon_slave_0 isMemoryDevice false set_interface_property avalon_slave_0 isNonVolatileStorage false set_interface_property avalon_slave_0 linewrapBursts false set_interface_property avalon_slave_0 maximumPendingReadTransactions 0 set_interface_property avalon_slave_0 printableDevice false set_interface_property avalon_slave_0 readLatency 0 set_interface_property avalon_slave_0 readWaitTime 1 set_interface_property avalon_slave_0 setupTime 0 set_interface_property avalon_slave_0 timingUnits Cycles set_interface_property avalon_slave_0 writeWaitTime 0 set_interface_property avalon_slave_0 ENABLED true add_interface_port avalon_slave_0 chipselect chipselect Input 1 add_interface_port avalon_slave_0 read_n read_n Input 1 add_interface_port avalon_slave_0 readdata readdata Output 16 # | # +----------------------------------- # +----------------------------------- # | connection point conduit_end # | add_interface conduit_end conduit end set_interface_property conduit_end ENABLED true add_interface_port conduit_end dio export Bidir 1 # | # +----------------------------------- 以上两个文件均在quartus 11中完成,成文DS18B20一个IP. 接下来:将本IP挂接到阿瓦龙总线上,直接读取16位的整数,再根据数据手册把温度翻译为可理解的内容即可。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
水清鱼读月,花静鸟谈天
鸿福喜庆宫停车场在哪里啊,我有事要去这个地
威什么部首是什么
中职升本科要考那些科目 要多少分啊
减数分裂过程中染色体的传递特点及其意义
圆形风管上接什么风口?
请问在澳大利亚阿德来德大学学计算机专业好还
在巴彦淖尔会不会被晒黑,要在那里上课,好怕
舞衣阁这个地址在什么地方,我要处理点事
学府路哈理工打车到哈东站要多久多少钱?
自己电脑的QQ音乐不管怎么都听不起歌重新下载
20万以内制动最好的车
空姐的标准和工资是多少
魔兽争霸为什么在局域网里不能使用作弊码呢?
桑乐壁挂太阳能从哪里加介质
推荐资讯
怎么完成自己的大学三年和毕业后三道五年的职
有部电影女主是个瞎子,男主是个烂好人老实人
通州区焦王庄阳光新城业主论坛据说通州区焦王
保护利川的环境,我们怎么做?的作文
AMD4400+CPU 一起动CPU温度就是60度 一玩
一元复始万象更新桃花柳绿芳草如茵骄阳似火大
天津华光线缆这个地址在什么地方,我要处理点
大师们,请问如何才能一个手机用上两个微信,
小米Note3与Vivo51哪个好?
商丘哪个地方批发臭豆腐?
LG洗衣机断电以后怎么再开不了机了
烟台LG伊诺特怎么样啊,指教
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?