• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      基于FPGA的多功能電子秤設計

      2019-11-01 09:10:59趙德宇
      數(shù)字技術(shù)與應用 2019年7期
      關(guān)鍵詞:模塊設計串口通信電子秤

      趙德宇

      摘要:電子秤是商家們不可或缺的一項工具,從如何提升測出重量的精度以及如何優(yōu)化電子秤的使用方法的目的出發(fā),我設計了一款基于FPGA的多功能電子秤,有效簡化了制作工藝和操作方式,有效提高了電子秤的效率。整個工程是以FPGA為基礎,接以外設,還有上位機來工作的,選擇的開發(fā)環(huán)境為Vivado 2016.3,作為一個較大的工程,所使用的是分模塊的寫法,最后將其在top文件中連線。

      關(guān)鍵詞:電子秤;FPGA;模塊設計;串口通信;通信協(xié)議

      中圖分類號:TP368 文獻標識碼:A 文章編號:1007-9416(2019)07-0131-03

      0 引言

      隨著人們生活水平的提高,商業(yè)的日益發(fā)展,電子秤種類也越來越多。此次的基于FPGA的電子秤設計,是電子秤工作模式的一種變相呈現(xiàn),在理解的基礎上做出的一些改動。一是能夠加深對電子秤等物件的了解,二是改善電子秤的工作步驟,達到簡單的優(yōu)化作用,為了全面優(yōu)化打下基礎。

      1 關(guān)鍵模塊簡介

      1.1 Hx711稱重模塊簡介

      (1)Hx711有四根引出線:VCC線供電;GND線接地;SCK線給予時鐘;DT線輸出數(shù)據(jù)。

      (2)Hx711時序圖如圖1。當數(shù)據(jù)輸出管腳DOUT為高電平時,串口時鐘輸入信號PD_SCK應為低電平。當DOUT從高電平變低電平后,PD_SCK應輸入25至27個不等的時鐘脈沖。[1]

      1.2 Basys3 FPGA簡介

      (1)Basys3 FPGA的外形與起源:BASYS 3包含所有BASYS板中的標準功能:完成準備使用的硬件,收集了大量的板載I/O設備,所有需要FPGA支持電路。

      (2)Basys3 的特點:33,280個邏輯單元,六輸入LUT結(jié)構(gòu);1,800 Kbits 快速RAM塊;5個時鐘管理單元,均各含一個鎖相環(huán) (PLL);90個DSP slices;內(nèi)部時鐘最高可達450MHz;1個片上模數(shù)轉(zhuǎn)換器 (XADC)。

      1.3 上位機操作模塊簡介

      (1)上位機界面圖如圖2所示。

      上位機通過輸入單價,向FPGA下發(fā)單價信息,讓FPGA計算出單價乘重量的總價,再由上位機顯示出來,同時還可以選擇匹配串口號。

      (2)上位機通信方式簡介:上位機和basys3之間采用串口通信,需要用到串口通信的協(xié)議。

      2 關(guān)鍵技術(shù)涉及

      2.1 串口通信技術(shù)

      (1)串口通信的基本流程:

      發(fā)送數(shù)據(jù)的過程:空閑狀態(tài),處于高電位,收到發(fā)送數(shù)據(jù)使能后,拉低一個數(shù)據(jù)位的時間,從高位到低位依次發(fā)送,數(shù)據(jù)位發(fā)送結(jié)束發(fā)送奇偶校驗位和停止位,一幀發(fā)完。[2]

      接收數(shù)據(jù)的過程:檢測到下降沿時,按一定速率從低位到高位接受數(shù)據(jù),數(shù)據(jù)接收結(jié)束比較奇偶校驗位是否正確,若正確則存入緩存,錯誤則跳過緩存。

      (2)選擇串口通信的理由:

      串口通信程序編寫簡單,硬件接口簡單,且用電腦顯示相關(guān)的調(diào)試信息,不需要借助其他外部硬件,可以很方便地進行程序調(diào)試。

      2.2 簡單通信協(xié)議技術(shù)

      (1)通信協(xié)議的定義:通信協(xié)議是指雙方實體完成通信或服務所必須遵循的規(guī)則和約定。

      (2)寫通信協(xié)議的注意事項:定時規(guī)則(時序):即何時通信,明確通信的順序、速率匹配和排序。

      (3)簡單通信協(xié)議的寫法:位于底層的串口通信協(xié)議。

      (4)常用串行通信連接標準類型簡介:

      1)RS-232:RS-232是大部分兼容Windows的桌面計算機的一個標準組件。

      2)RS-422:RS-422 (EIA RS-422-A Standard)是傳統(tǒng)Apple計算機的串口連接標準。

      3)RS-485:RS-485是RS-422的擴展集,對這些能力進行了擴展。

      3 整個電子秤體系的實現(xiàn)

      3.1 開發(fā)環(huán)境以及物件的選擇

      (1)開發(fā)環(huán)境——選用Vivado 2016.3;

      (2)稱重模塊——選用hx711;

      (3)FPGA——選用Basys3;

      (4)上位機開發(fā)——選用C#和Visual Studio 2017。

      3.2 hx711模塊與FPGA之間通信的實現(xiàn)

      (1)基本原理:

      采用hx711規(guī)定的時序通信示意圖如圖1。

      通過自設時鐘PD_SCK,讀取DOUT的數(shù)據(jù)去定義上升沿處在什么位置即可。

      (2)重要代碼:

      代碼段一(hx711模塊):

      always@(posedge clk) din_ff1<=din;//給數(shù)據(jù)做延遲

      always@(posedge clk) din_ff2<=din_ff1;//延遲

      assign din_fall=din_ff2&(!din_ff1);

      這是一個延時檢測下降沿的代碼。

      3.3 FPGA與上位機之間通信的實現(xiàn)

      (1)FPGA向上位機上發(fā)。

      1)基本原理:

      每8位組成一個字節(jié)后,12個字節(jié)組成一幀數(shù)據(jù)。起始位字節(jié)是aa,之后的5位字節(jié)是數(shù)據(jù)位,隨后0字節(jié)填充,最后結(jié)束字節(jié)為55。

      2)重要代碼(data_gen模塊):

      1,parameter ?word_num = 8'd12;//發(fā)送字節(jié)數(shù)

      2,word1:

      begin

      if(word_cnt==word_num)

      curr_st<=word1_gap;

      else ;

      end

      3,always@(posedge clk or negedge rst_n)

      begin

      if(!rst_n)

      word_cnt<=0;

      else if(curr_st==idle||curr_st==word1_gap)

      word_cnt<=0;

      else if((curr_st==word1)&byte_end_rise)

      word_cnt<=word_cnt+1;

      else ;

      end

      4,else case({curr_st,word_cnt})

      {word1,8'h0}:begin data<=din0;data_valid<=1;end

      {word1,8'h1}:begin data<=din1;data_valid<=1;end

      {word1,8'h2}:begin data<=din2;data_valid<=1;end

      {word1,8'h3}:begin data<=din3;data_valid<=1;end

      {word1,8'h4}:begin data<=din4;data_valid<=1;end

      {word1,8'h5}:begin data<=din5;data_valid<=1;end

      {word1,8'h6}:begin data<=din6;data_valid<=1;end

      {word1,8'h7}:begin data<=din7;data_valid<=1;end

      {word1,8'h8}:begin data<=din8;data_valid<=1;end

      {word1,8'h9}:begin data<=din9;data_valid<=1;end

      {word1,8'ha}:begin data<=din10;data_valid<=1;end

      {word1,8'hb}:begin data<=din11;data_valid<=1;end

      default: ?begin data<=8'h00;data_valid<=0;end

      endcase

      上述代碼在word1(傳輸)狀態(tài)時,若一幀數(shù)據(jù)還沒有組完,每過一個時鐘沿,word_cnt都會加1。[3]

      (2)上位機向FPGA下發(fā)。

      1)基本原理:

      起始位字節(jié)aa,12字節(jié),第二位字節(jié)為下發(fā)的單價信息,之后補零字節(jié),結(jié)束位為55。

      2)重要代碼(uart_rece模塊):

      1,st_rx_idle:

      begin

      rxd_data_vld<=1'b0;

      check_sum<=0;

      if(rxd_data_rdy&&rxd_data==8'haa)

      begin

      rxd_data0<=8'haa;

      curr_st<=st_rx1;

      end

      else if(timeout_cnt==TIMEOUT_NUM)

      curr_st<=st_rx_idle;

      else;

      end

      2,st_rx1:

      begin

      if(rxd_data_rdy)

      begin

      check_sum<=check_sum^rxd_data;

      rxd_data1<=rxd_data;

      curr_st<=st_rx2;

      end

      else if(timeout_cnt==TIMEOUT_NUM)

      curr_st<=st_rx_idle;

      else;

      end

      3,st_tail:

      begin

      if(rxd_data_rdy&&rxd_data==8'h55)

      begin

      rxd_data11<=8'h55;

      curr_st<=st_rx_idle;

      rxd_data_vld<=1;

      end

      else if(timeout_cnt==TIMEOUT_NUM)

      curr_st<=st_rx_idle;

      else;

      end

      4,always@(posedge clk or negedge rst_n)

      begin

      if(!rst_n)

      timeout_cnt<=0;

      else if(curr_st==st_rx_idle)

      timeout_cnt<=0;

      else if(rxd_data_rdy)

      timeout_cnt<=0;

      else

      imeout_cnt<=timeout_cnt+1;

      end

      上述代碼解釋了在空閑狀態(tài)st_rx_idle時會循環(huán)讀取數(shù)據(jù),當讀到aa時視為開始接受整幀數(shù)據(jù)(沒有讀到aa會自動這個狀態(tài)中循環(huán))。

      3.4 實現(xiàn)邏輯簡介

      再Top文件里:hx711中得到的zl(重量數(shù)據(jù))和價格計算模塊的zl連在一起作為價格計算模塊的輸入。單價price乘重量zl的總價再取模得出Money的各十百千,price(單價)和Uart receive模塊里的rxd_data1連在一起,price即VS里描述的str_danjia,對應到rxd_data1。Uart_data_gen模塊里的數(shù)據(jù)位通過連線接在了價格計算模塊數(shù)據(jù)上,再加上一些標志位,形成了一幀含有總價的標準數(shù)據(jù)發(fā)給上位機。

      4 結(jié)語

      本文詳細闡述了基于FPGA的多功能電子秤的開發(fā)過程,整個工程采用了Verilog語言,主要在Vivado上進行編寫程序,而上位機是在Visual Studio軟件上進行制作。

      本文一開始介紹了整個工程各部分關(guān)鍵模塊的工作方法和特點,如hx711,F(xiàn)PGA Basys3,上位機模塊等。此后通過對此次工程技術(shù)需求的分析,介紹了最重要的通信技術(shù)之一:串口通信,從時序,工作方法,使用優(yōu)勢各方面對其進行闡述。還介紹了另一個實用的技術(shù):通信協(xié)議,并從它的定義,寫法,類型進行了分析。之后就是系統(tǒng)的實現(xiàn)部分,詳細給出了實現(xiàn)過程中的環(huán)境,方法,并根據(jù)模塊之間的關(guān)系分塊進行了描述,包括FPGA和hx711模塊之間通信的實現(xiàn),F(xiàn)PGA與上位機之間通信的實現(xiàn),還有整個工程的邏輯連線是怎樣的,都給予了較為詳細的闡述。

      綜上所述,本文就設計一個具體的基于FPGA多功能電子秤作了一個較為詳細的闡述,同時也給出了對FPGA和串口進行相關(guān)操作的應用實例,滿足進行FPGA項目設計的所有基本要求。

      參考文獻

      [1] 尹玲玉.基于單片機的多功能電子秤設計[J].科技經(jīng)濟導刊,2018(14):61.

      [2] 于濤.基于單片機的多功能電子秤的設計[J].價值工程,2012(3):136.

      [3] 張爭剛,熊剛.基于單片機的多功能電子秤設計[J].機械與電子,2016(11):58-61.

      猜你喜歡
      模塊設計串口通信電子秤
      電子秤
      關(guān)于電子秤的設計
      電子制作(2018年2期)2018-04-18 07:13:21
      壓死電子秤
      基于Qt和Flash的嵌入式Linux軟件架構(gòu)設計
      基于小型ERP管理系統(tǒng)
      串口通信在智能家居監(jiān)控系統(tǒng)中的應用
      試論HIS系統(tǒng)中病區(qū)管理模塊的設計以及管理效果
      基于J2EE的牛奶銷售系統(tǒng)設計與開發(fā)
      基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設計與實現(xiàn)
      科技視界(2016年13期)2016-06-13 22:01:19
      基于STM32的高精度電子秤設計
      電子制作(2016年21期)2016-05-17 03:52:48
      佛山市| 闸北区| 高雄市| 健康| 泾源县| 连江县| 苏尼特左旗| 永兴县| 孝义市| 麻江县| 蕉岭县| 乐至县| 九龙坡区| 保靖县| 高州市| 长丰县| 重庆市| 五台县| 竹山县| 石楼县| 巢湖市| 呈贡县| 台南市| 屏南县| 惠来县| 黄龙县| 保靖县| 隆德县| 宁波市| 丰城市| 醴陵市| 黄冈市| 五常市| 阿拉善左旗| 沙雅县| 平泉县| 互助| 白水县| 清镇市| 三江| 元阳县|