999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

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

2019-11-01 09:10:59趙德宇
數字技術與應用 2019年7期

趙德宇

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

關鍵詞:電子秤;FPGA;模塊設計;串口通信;通信協議

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

0 引言

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

1 關鍵模塊簡介

1.1 Hx711稱重模塊簡介

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

(2)Hx711時序圖如圖1。當數據輸出管腳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結構;1,800 Kbits 快速RAM塊;5個時鐘管理單元,均各含一個鎖相環 (PLL);90個DSP slices;內部時鐘最高可達450MHz;1個片上模數轉換器 (XADC)。

1.3 上位機操作模塊簡介

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

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

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

2 關鍵技術涉及

2.1 串口通信技術

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

發送數據的過程:空閑狀態,處于高電位,收到發送數據使能后,拉低一個數據位的時間,從高位到低位依次發送,數據位發送結束發送奇偶校驗位和停止位,一幀發完。[2]

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

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

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

2.2 簡單通信協議技術

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

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

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

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

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

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

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

3 整個電子秤體系的實現

3.1 開發環境以及物件的選擇

(1)開發環境——選用Vivado 2016.3;

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

(3)FPGA——選用Basys3;

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

3.2 hx711模塊與FPGA之間通信的實現

(1)基本原理:

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

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

(2)重要代碼:

代碼段一(hx711模塊):

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

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

assign din_fall=din_ff2&(!din_ff1);

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

3.3 FPGA與上位機之間通信的實現

(1)FPGA向上位機上發。

1)基本原理:

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

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

1,parameter ?word_num = 8'd12;//發送字節數

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(傳輸)狀態時,若一幀數據還沒有組完,每過一個時鐘沿,word_cnt都會加1。[3]

(2)上位機向FPGA下發。

1)基本原理:

起始位字節aa,12字節,第二位字節為下發的單價信息,之后補零字節,結束位為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

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

3.4 實現邏輯簡介

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

4 結語

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

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

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

參考文獻

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

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

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

主站蜘蛛池模板: 亚洲人视频在线观看| 久久久久无码精品| 国产精品丝袜在线| 好吊日免费视频| 久久久久久尹人网香蕉 | 91国内视频在线观看| 国产激情第一页| 91黄色在线观看| 色哟哟国产精品| 亚洲精品动漫| 91视频99| 亚洲一级毛片在线观| 国产无码高清视频不卡| 无码专区第一页| 免费国产黄线在线观看| 国产在线无码一区二区三区| 亚洲无码91视频| 波多野结衣一区二区三区四区视频 | 91小视频版在线观看www| 国产视频a| 亚洲精品成人片在线观看| 91精品啪在线观看国产| 亚洲最大综合网| 又爽又大又光又色的午夜视频| 久操线在视频在线观看| 黄色网页在线播放| 国产一在线| yy6080理论大片一级久久| 亚洲妓女综合网995久久| 任我操在线视频| 成人午夜亚洲影视在线观看| 国产大片黄在线观看| 在线观看国产小视频| 亚洲天堂.com| 尤物精品国产福利网站| 亚洲国产精品日韩av专区| 日韩在线视频网站| 91一级片| 欧洲在线免费视频| а∨天堂一区中文字幕| 国产精品久久久久无码网站| 国产美女免费| 亚洲黄网视频| 青青青国产精品国产精品美女| 美女被操91视频| 91福利免费| www.狠狠| 亚瑟天堂久久一区二区影院| 区国产精品搜索视频| 久久国产精品77777| 亚洲AⅤ综合在线欧美一区| 91视频国产高清| 无码视频国产精品一区二区| 日韩无码视频专区| 五月婷婷丁香色| 国产精品极品美女自在线看免费一区二区| 18黑白丝水手服自慰喷水网站| 国产美女无遮挡免费视频网站| 欧美精品导航| 99热免费在线| 欧美精品亚洲精品日韩专区va| 亚洲熟女中文字幕男人总站| 欧美三级日韩三级| 久久人妻系列无码一区| 日韩中文无码av超清| 国产精品无码久久久久久| 在线观看亚洲精品福利片| 久热re国产手机在线观看| 有专无码视频| 免费大黄网站在线观看| 99久久国产综合精品2023| 国产激情影院| 欧美国产精品拍自| 无码专区在线观看| 亚洲国产午夜精华无码福利| 免费看美女毛片| 国产成人AV综合久久| 欧美成人午夜影院| 国产成人欧美| 亚洲精品在线影院| 精品日韩亚洲欧美高清a| 97人人做人人爽香蕉精品|