亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于FPGA的多功能電子秤設(shè)計(jì)

        2019-11-01 09:10:59趙德宇
        關(guān)鍵詞:模塊設(shè)計(jì)串口通信電子秤

        趙德宇

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

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

        中圖分類號(hào):TP368 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1007-9416(2019)07-0131-03

        0 引言

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

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

        1.1 Hx711稱重模塊簡(jiǎn)介

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

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

        1.2 Basys3 FPGA簡(jiǎn)介

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

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

        1.3 上位機(jī)操作模塊簡(jiǎn)介

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

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

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

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

        2.1 串口通信技術(shù)

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

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

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

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

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

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

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

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

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

        (4)常用串行通信連接標(biāo)準(zhǔn)類型簡(jiǎn)介:

        1)RS-232:RS-232是大部分兼容Windows的桌面計(jì)算機(jī)的一個(gè)標(biāo)準(zhǔn)組件。

        2)RS-422:RS-422 (EIA RS-422-A Standard)是傳統(tǒng)Apple計(jì)算機(jī)的串口連接標(biāo)準(zhǔn)。

        3)RS-485:RS-485是RS-422的擴(kuò)展集,對(duì)這些能力進(jìn)行了擴(kuò)展。

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

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

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

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

        (3)FPGA——選用Basys3;

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

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

        (1)基本原理:

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

        通過自設(shè)時(shí)鐘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);

        這是一個(gè)延時(shí)檢測(cè)下降沿的代碼。

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

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

        1)基本原理:

        每8位組成一個(gè)字節(jié)后,12個(gè)字節(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í),若一幀數(shù)據(jù)還沒有組完,每過一個(gè)時(shí)鐘沿,word_cnt都會(huì)加1。[3]

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

        1)基本原理:

        起始位字節(jié)aa,12字節(jié),第二位字節(jié)為下發(fā)的單價(jià)信息,之后補(bǔ)零字節(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時(shí)會(huì)循環(huán)讀取數(shù)據(jù),當(dāng)讀到aa時(shí)視為開始接受整幀數(shù)據(jù)(沒有讀到aa會(huì)自動(dòng)這個(gè)狀態(tài)中循環(huán))。

        3.4 實(shí)現(xiàn)邏輯簡(jiǎn)介

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

        4 結(jié)語

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

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

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

        參考文獻(xiàn)

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

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

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

        猜你喜歡
        模塊設(shè)計(jì)串口通信電子秤
        電子秤
        關(guān)于電子秤的設(shè)計(jì)
        電子制作(2018年2期)2018-04-18 07:13:21
        壓死電子秤
        基于Qt和Flash的嵌入式Linux軟件架構(gòu)設(shè)計(jì)
        基于小型ERP管理系統(tǒng)
        串口通信在智能家居監(jiān)控系統(tǒng)中的應(yīng)用
        試論HIS系統(tǒng)中病區(qū)管理模塊的設(shè)計(jì)以及管理效果
        基于J2EE的牛奶銷售系統(tǒng)設(shè)計(jì)與開發(fā)
        基于OpenCV的室內(nèi)照明智能控制系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)
        科技視界(2016年13期)2016-06-13 22:01:19
        基于STM32的高精度電子秤設(shè)計(jì)
        電子制作(2016年21期)2016-05-17 03:52:48
        国产成人综合精品一区二区| 久久国产欧美日韩高清专区| 久久久久AV成人无码网站| 久久久人妻精品一区bav| 在线观看老湿视频福利| 国产精品免费久久久久软件| 一本一本久久a久久精品综合| 91精品蜜桃熟女一区二区| 亚洲成a∨人片在线观看无码| a级毛片无码免费真人| 青青国产成人久久91| 国内精品少妇久久精品| 久久精品国产99国产精品澳门| 7777奇米四色成人眼影| 韩国一级成a人片在线观看| 成人影院视频在线播放| 97久久国产亚洲精品超碰热| 色综合中文综合网| 欧美在线观看www| 亚州无吗一区二区三区| 国产一区二区在线中文字幕| 蜜臀av一区二区三区久久| 99精品国产在热久久无码| 亚洲暴爽av人人爽日日碰| 亚洲啪啪AⅤ一区二区三区| 日本成年一区久久综合| 老司机亚洲精品影院| 中文字幕Aⅴ人妻一区二区苍井空| 亚洲综合偷拍一区二区| 大又大又粗又硬又爽少妇毛片| 人人妻人人澡人人爽曰本| 国产91AV免费播放| 隔壁人妻欲求不满中文字幕| 性猛交ⅹxxx富婆视频| 亚洲av成人一区二区三区在线观看| 国产精品国产三级国产在线观| 99久久99久久久精品蜜桃| 亚洲av日韩综合一区在线观看 | 精精国产xxxx视频在线播放器| 中文字幕综合一区二区| 日本大片免费观看视频|