当前位置: 首页 > news >正文

遵义公司网站制作哪家好网站如何运营管理

遵义公司网站制作哪家好,网站如何运营管理,浙江建筑信息网站,成都农家乐设计公司本想着一天发一个实验的#xff0c;这个ds18b20#xff0c;耗时两天。代码写了两次#xff0c;呜呜~ 由于第二次写代码没画时序图#xff0c;所以代码和时序图一些参数有些不一致#xff0c;但问题不大。 这里有几件事情值得一提#xff1a; 1#xff1a;关于状态机的…本想着一天发一个实验的这个ds18b20耗时两天。代码写了两次呜呜~ 由于第二次写代码没画时序图所以代码和时序图一些参数有些不一致但问题不大。 这里有几件事情值得一提 1关于状态机的编写我觉得还是三段式比较好。 2关于生成其他时钟信号用来做触发边沿。我不喜欢用这种方法提一个概念“全局时钟网络”。所以用产生一个1us base基础计时器产生一个1us的标志信号。之后的计数器与该计数器级联记得把end_cnt_base这个标志信号加上。 我犯下的错误 1在画时序图是没有画end_cnt_base标志信号直接默认时钟为周期为1us造成了混乱。所以以后要注意。 2 逻辑写成了 || 逻辑 3三态门输出 Z 写成了 1 4数据位宽定义错误因为少思考了一个数据对应的位宽。 4读取温度时少记一位。注意data_bit跳转条件和发指令时不一样的。 module ds18b20(input wire sys_clk ,input wire sys_rst_n ,inout wire dq ,output reg [19:0] data ,output reg sign );// localparam 指令先发低位。localparam WR_CMD_WORD 16h44CC ,RD_CMD_WORD 16hBECC ;localparam INIT 6b000_001 ,WR_CMD 6b000_010 ,WAIT 6b000_100 ,INIT_AGIN 6b001_000 ,RD_CMD 6b010_000 ,RD_TEMP 6b100_000 ;// wire signal definewire end_cnt_base ;wire INITtoWR_CMD ;wire WR_CMDtoWAIT ;wire WAITtoINIT_AGIN ;wire INIT_AGINtoRD_CMD ;wire RD_CMDtoRD_TEMP ;wire RD_TEMPtoINIT ;// reg signal definereg [5:0] cnt_base ;reg dq_en ;reg dq_out ;reg [5:0] state_c /*synthesis preserve*/;reg [5:0] state_n /*synthesis preserve*/;reg [19:0] cnt ;reg [4:0] data_bit ;reg flag_respond ;reg data_done ;reg [15:0] data_temp ; // 读取高速缓存器的byte0和byte1一共16位。/****************************************************************************************/// reg [5:0] cnt_base ;// wire end_cnt_base ;always (posedge sys_clk or negedge sys_rst_n) if(~sys_rst_n)cnt_base 6d0 ;else if(end_cnt_base)cnt_base 6d0 ;else cnt_base cnt_base 1b1 ;assign end_cnt_base cnt_base 49;// reg [5:0] state_c ;always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)state_c INIT;else state_c state_n ;// reg [5:0] state_n ;always (*)case (state_c)INIT :if(INITtoWR_CMD)state_n WR_CMD ;else state_n INIT ;WR_CMD :if(WR_CMDtoWAIT)state_n WAIT ;else state_n WR_CMD ;WAIT :if(WAITtoINIT_AGIN)state_n INIT_AGIN ;else state_n WAIT ;INIT_AGIN :if(INIT_AGINtoRD_CMD)state_n RD_CMD ;else state_n INIT_AGIN ;RD_CMD :if(RD_CMDtoRD_TEMP)state_n RD_TEMP ;else state_n RD_CMD ;RD_TEMP :if(RD_TEMPtoINIT)state_n INIT ;else state_n RD_TEMP ;default : state_n INIT ;endcase// 状态转移条件assign INITtoWR_CMD (state_c INIT ) (end_cnt_base flag_respond 1b1 cnt 999);assign WR_CMDtoWAIT (state_c WR_CMD ) (end_cnt_base 1b1 cnt 60 data_bit 15) ;assign WAITtoINIT_AGIN (state_c WAIT ) (end_cnt_base cnt 749_999) ;assign INIT_AGINtoRD_CMD (state_c INIT_AGIN ) (end_cnt_base flag_respond 1b1 cnt 999);assign RD_CMDtoRD_TEMP (state_c RD_CMD ) (end_cnt_base 1b1 cnt 60 data_bit 15) ;assign RD_TEMPtoINIT (state_c RD_TEMP ) (end_cnt_base 1b1 cnt 60 data_done 1b1);// reg [19:0] cnt ;always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)cnt 20d0 ;else case (state_c)INIT : if(cnt 999 end_cnt_base 1b1)cnt 20d0 ;else if(end_cnt_base 1b1)cnt cnt 1b1 ;WR_CMD : if(cnt 60 end_cnt_base 1b1)cnt 20d0 ;else if(end_cnt_base 1b1)cnt cnt 1b1 ;WAIT : if(cnt 749_999 end_cnt_base 1b1)cnt 20d0 ;else if(end_cnt_base 1b1)cnt cnt 1b1 ;INIT_AGIN : if(cnt 999 end_cnt_base 1b1)cnt 20d0 ;else if(end_cnt_base 1b1)cnt cnt 1b1 ;RD_CMD : if(cnt 60 end_cnt_base 1b1)cnt 20d0 ;else if(end_cnt_base 1b1)cnt cnt 1b1 ;RD_TEMP : if(cnt 60 end_cnt_base 1b1)cnt 20d0 ;else if(end_cnt_base 1b1)cnt cnt 1b1 ;default : cnt 20d0 ;endcase// reg [3:0] data_bit ;always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)data_bit 5d0 ;else case (state_c)INIT : data_bit 5d0 ;WR_CMD : if(end_cnt_base 1b1 cnt 60 data_bit 15)data_bit 5d0 ;else if(end_cnt_base 1b1 cnt 60)data_bit data_bit 1b1 ;else data_bit data_bit ;WAIT : data_bit 5d0 ;INIT_AGIN : data_bit 5d0 ;RD_CMD : if(end_cnt_base 1b1 cnt 60 data_bit 15)data_bit 5d0 ;else if(end_cnt_base 1b1 cnt 60)data_bit data_bit 1b1 ;else data_bit data_bit ;RD_TEMP : if(end_cnt_base 1b1 cnt 10 data_bit 16) // 第十微秒的时候采样。data_bit 5d0 ;else if(end_cnt_base 1b1 cnt 10)data_bit data_bit 1b1 ;else data_bit data_bit ;default : data_bit 5d0 ;endcase// reg flag_respond ;always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)flag_respond 1b0 ;else if(state_c ! INIT state_c ! INIT_AGIN)flag_respond 1b0 ;else if((state_c INIT || state_c INIT_AGIN) cnt 590 dq 1b0)flag_respond 1b1 ;else flag_respond flag_respond ;// reg data_done ;always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)data_done 1b0 ;else if(state_c ! RD_TEMP)data_done 1b0 ;else if(state_c RD_TEMP end_cnt_base 1b1 data_bit 16)data_done 1b1 ;else data_done data_done ;// reg [15:0] data_temp ;always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)data_temp 16d0 ;else if(state_c RD_TEMP end_cnt_base 1b1 cnt 13)data_temp {dq,data_temp[15:1]} ;else data_temp data_temp ;// reg dq_en ;// reg dq_out ;always (posedge sys_clk or negedge sys_rst_n) beginif(~sys_rst_n) begindq_en 1b0 ;dq_out 1b0 ;end else begincase (state_c)INIT : beginif(cnt 0 cnt 499) begindq_en 1b1 ;dq_out 1b0 ;end else begindq_en 1b0 ;dq_out 1b0 ;end endWR_CMD : beginif(cnt 60) begindq_en 1b0 ;dq_out 1b0 ;end else beginif(WR_CMD_WORD[data_bit] 1b1) beginif(cnt 0 cnt 14) begindq_en 1b1 ;dq_out 1b0 ;end else begindq_en 1b0 ;dq_out 1b0 ;endend else begindq_en 1b1 ;dq_out 1b0 ;endend endWAIT : begindq_en 1b1 ;dq_out 1b1 ;endINIT_AGIN: beginif(cnt 0 cnt 499) begindq_en 1b1 ;dq_out 1b0 ;end else begindq_en 1b0 ;dq_out 1b0 ;end endRD_CMD : beginif(cnt 60) begindq_en 1b0 ;dq_out 1b0 ;end else beginif(RD_CMD_WORD[data_bit] 1b1) beginif(cnt 0 cnt 14) begindq_en 1b1 ;dq_out 1b0 ;end else begindq_en 1b0 ;dq_out 1b0 ;endend else begindq_en 1b1 ;dq_out 1b0 ;endend endRD_TEMP : beginif(cnt 0 || cnt 1) begindq_en 1b1 ;dq_out 1b0 ;end else begindq_en 1b0 ;dq_out 1b0 ;endenddefault: begindq_en 1b0 ;dq_out 1b0 ;endendcaseendend/***********************************************************************/// wire dq assign dq (dq_en 1b1) ? dq_out : 1bz ;// reg [19:0] data always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)data 20d0 ;else if(state_c RD_TEMP data_done 1b1) if(data_temp[15] 1b0)data data_temp[10:0] * 10d625;else data (~data_temp[10:0] 1b1 ) * 10d625;else data data ;// reg sign always (posedge sys_clk or negedge sys_rst_n)if(~sys_rst_n)sign 1b0 ;else if(state_c RD_TEMP data_done 1b1)sign data_temp[15];else sign sign ;endmodule module top(input wire sys_clk ,input wire sys_rst_n ,inout wire dq ,output wire ds ,output wire oe ,output wire shcp ,output wire stcp );wire [19:0] data_w /*synthesis keep */;wire sign_w ;wire [05:00] point_w ;wire seg_en_w ;assign seg_en_w 1b1 ;assign point_w 6b010_000 ;ds18b20 ds18b20_insert(.sys_clk ( sys_clk ) ,.sys_rst_n ( sys_rst_n ) ,.dq ( dq ) ,.data ( data_w ) ,.sign ( sign_w ) );seg_595_dynamic seg_595_dynamic_insert(.sys_clk ( sys_clk ) ,.sys_rst_n ( sys_rst_n ) ,.data ( data_w ) ,.point ( point_w ) ,.sign ( sign_w ) ,.seg_en ( seg_en_w ) ,.ds ( ds ) ,.oe ( oe ) ,.shcp ( shcp ) ,.stcp ( stcp ) );endmodule
http://www.pierceye.com/news/921448/

相关文章:

  • 临夏州建设银行网站深圳官网
  • 手机互动网站建设昆山网络公司哪家比较好
  • 桐城网站建设推荐做网站的公司
  • 中国 网站服务器 租金手机免费网址
  • php网站如何做多语言网站域名有效期
  • 企业网站开发周期公司建设网站的作用
  • 惠普电脑网站建设策划方案蒙自做网站的公司
  • 柳州企业 商家应该如何做网站网站忧化 优帮云
  • 网站开发生命周期网站推广实施计划
  • 传媒公司注册经营范围有哪些北京百度seo排名点击器
  • 什么是cms网站系统做响应式网站怎么设计
  • wordpress多城市子站在线培训网站
  • 企业网站服务门户网站搬家怎么做
  • 免费浏览外国网站的软件防止访问网站文件夹
  • 长沙县政务网站公司介绍怎么写范本
  • 免费网站建设方案优化seo整体优化
  • 境外公司在国内建网站微信小程序登录平台
  • 手机网站页面模板企业网站建设相关书籍在线阅读
  • 服装网站建设内容asp网站服务建设论文
  • 开封 网站建设 网络推广如何用xshell安装wordpress
  • 河北建设工程信息网站银行外包不是人干的
  • 郑州免费做网站的襄阳品牌网站建设
  • 爱网站站长工具android软件开发下载
  • 网站被入侵宁波妇科医生推荐
  • 移动网站建设学习新能源汽车价格表2021
  • 如何做视频会员网站工商注册公司需要提供的资料
  • 网站做多久能盈利网站设计定做
  • 微信网站后台功能哪里买域名便宜
  • 合肥重点工程建设局密云seo排名优化培训
  • 二学一做网站福建建设资格执业注册管理中心网站