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.

主站蜘蛛池模板: 黄色在线不卡| 国产视频 第一页| 亚洲国产精品日韩欧美一区| AV天堂资源福利在线观看| 久久精品无码专区免费| 91人妻在线视频| 欧美一区二区三区国产精品 | 毛片a级毛片免费观看免下载| 久久a级片| 又爽又大又黄a级毛片在线视频| 色综合久久无码网| 一区二区自拍| 午夜国产大片免费观看| 国产欧美日韩视频一区二区三区| www.youjizz.com久久| 免费 国产 无码久久久| 中文字幕亚洲专区第19页| 亚洲国产精品无码久久一线| 99久久精品久久久久久婷婷| 性欧美在线| 18黑白丝水手服自慰喷水网站| 无码粉嫩虎白一线天在线观看| 片在线无码观看| 在线观看精品国产入口| 少妇精品久久久一区二区三区| 亚洲国产成人综合精品2020| 成人福利在线观看| 亚洲成年人网| 国产91高跟丝袜| 国产一区成人| 国产91透明丝袜美腿在线| 亚洲视频免| 亚洲一区二区三区在线视频| 精品福利一区二区免费视频| 国产日韩AV高潮在线| 亚洲伦理一区二区| 国产福利在线免费| 亚洲女人在线| 亚洲国产一成久久精品国产成人综合| 日韩A∨精品日韩精品无码| 国产精品原创不卡在线| 青青青国产免费线在| 亚洲一级毛片免费观看| 亚洲av日韩av制服丝袜| 一级毛片免费观看不卡视频| 国产在线八区| 日韩欧美中文| 欧美日本在线播放| 91蝌蚪视频在线观看| 91在线播放免费不卡无毒| 精品偷拍一区二区| 久久中文无码精品| 爆乳熟妇一区二区三区| 亚洲午夜综合网| 中文精品久久久久国产网址| 国产99视频在线| 久久久久中文字幕精品视频| 高h视频在线| 久久久久国色AV免费观看性色| 国产1区2区在线观看| 久久精品人人做人人综合试看| 国产99在线| 午夜a级毛片| 99久久精品免费观看国产| 亚洲视频影院| 国产不卡网| 色综合a怡红院怡红院首页| 色综合天天娱乐综合网| 亚洲色婷婷一区二区| 精品国产香蕉在线播出| 欧美精品亚洲二区| 精品99在线观看| 午夜在线不卡| 午夜不卡视频| 成年片色大黄全免费网站久久| 久久精品人人做人人爽电影蜜月| 天天色天天综合网| 老汉色老汉首页a亚洲| 国产亚洲欧美另类一区二区| 日韩无码精品人妻| 免费a级毛片18以上观看精品| 国产乱人激情H在线观看|