Communication protocols – for short protocols – form the basis for the opera- tion of computer networks and telecommunication systems. They are behavior conventions which describe how communication systems interact with each other in computer networks. Protocols define the temporal order of the interactions and the formats of the data units exchanged. Communication protocols comprise a wide range of different functions and mechanisms, such as the sending and receiv- ing of data units, their coding/decoding, error control mechanisms, timer control, flow control, and many others.
標(biāo)簽: Engineering Protocol
上傳時間: 2020-05-31
上傳用戶:shancjb
This book intends to prepare you to define Unified Communications (UC) for yourself and then get it to work for you. Each vendor pulls together from its available products a package of features related to voice, data, messaging, and image communications. That’s UC for one vendor, but it’s unlikely to match exactly the UC from another vendor. You need a detailed specification to know what you’ll see installed.
標(biāo)簽: Communications Unified VoIP and
上傳時間: 2020-06-01
上傳用戶:shancjb
A kinematically redundant manipulator is a serial robotic arm that has more independently driven joints than are necessary to define the desired pose (position and orientation) of its end-effector. With this definition, any planar manipulator (a manipulator whose end-effector motion is restrained in a plane) with more than three joints is a redundant manipulator. Also, a manipulator whose end-effector can accept aspatialposeisaredundant manipulator ifithas morethan sixindependently driven joints. For example, the manipulator shown in Fig. 1.1 has two 7-DOF arms mounted on a torso with three degrees of freedom (DOFs). This provides 10 DOFs for each arm. Since the end-effector of each arm can have a spatial motion with six DOFs, the arms are redundant.
標(biāo)簽: Autonomous Modeling Planning Robots Path
上傳時間: 2020-06-10
上傳用戶:shancjb
This book is intended to be a general introduction to neural networks for those with a computer architecture, circuits, or systems background. In the introduction (Chapter 1), we define key vo- cabulary, recap the history and evolution of the techniques, and for make the case for additional hardware support in the field.
標(biāo)簽: Deep_Learning_for_Computer_Archit ects
上傳時間: 2020-06-10
上傳用戶:shancjb
#include<stdio.h> #define TREEMAX 100 typedef struct BT { char data; BT *lchild; BT *rchild; }BT; BT *CreateTree(); void Preorder(BT *T); void Postorder(BT *T); void Inorder(BT *T); void Leafnum(BT *T); void Nodenum(BT *T); int TreeDepth(BT *T); int count=0; void main() { BT *T=NULL; char ch1,ch2,a; ch1='y'; while(ch1=='y'||ch1=='y') { printf("\n"); printf("\n\t\t 二叉樹子系統(tǒng)"); printf("\n\t\t*****************************************"); printf("\n\t\t 1---------建二叉樹 "); printf("\n\t\t 2---------先序遍歷 "); printf("\n\t\t 3---------中序遍歷 "); printf("\n\t\t 4---------后序遍歷 "); printf("\n\t\t 5---------求葉子數(shù) "); printf("\n\t\t 6---------求結(jié)點(diǎn)數(shù) "); printf("\n\t\t 7---------求樹深度 "); printf("\n\t\t 0---------返 回 "); printf("\n\t\t*****************************************"); printf("\n\t\t 請選擇菜單號 (0--7)"); scanf("%c",&ch2); getchar(); printf("\n"); switch(ch2) { case'1': printf("\n\t\t請按先序序列輸入二叉樹的結(jié)點(diǎn):\n"); printf("\n\t\t說明:輸入結(jié)點(diǎn)(‘0’代表后繼結(jié)點(diǎn)為空)后按回車。\n"); printf("\n\t\t請輸入根結(jié)點(diǎn):"); T=CreateTree(); printf("\n\t\t二叉樹成功建立!\n");break; case'2': printf("\n\t\t該二叉樹的先序遍歷序列為:"); Preorder(T);break; case'3': printf("\n\t\t該二叉樹的中序遍歷序列為:"); Inorder(T);break; case'4': printf("\n\t\t該二叉樹的后序遍歷序列為:"); Postorder(T);break; case'5': count=0;Leafnum(T); printf("\n\t\t該二叉樹有%d個葉子。\n",count);break; case'6': count=0;Nodenum(T); printf("\n\t\t該二叉樹總共有%d個結(jié)點(diǎn)。\n",count);break; case'7': printf("\n\t\t該樹的深度為:%d",TreeDepth(T)); break; case'0': ch1='n';break; default: printf("\n\t\t***請注意:輸入有誤!***"); } if(ch2!='0') { printf("\n\n\t\t按【Enter】鍵繼續(xù),按任意鍵返回主菜單!\n"); a=getchar(); if(a!='\xA') { getchar(); ch1='n'; } } } } BT *CreateTree() { BT *t; char x; scanf("%c",&x); getchar(); if(x=='0') t=NULL; else { t=new BT; t->data=x; printf("\n\t\t請輸入%c結(jié)點(diǎn)的左子結(jié)點(diǎn):",t->data); t->lchild=CreateTree(); printf("\n\t\t請輸入%c結(jié)點(diǎn)的右子結(jié)點(diǎn):",t->data); t->rchild=CreateTree(); } return t; } void Preorder(BT *T) { if(T) { printf("%3c",T->data); Preorder(T->lchild); Preorder(T->rchild); } } void Inorder(BT *T) { if(T) { Inorder(T->lchild); printf("%3c",T->data); Inorder(T->rchild); } } void Postorder(BT *T) { if(T) { Postorder(T->lchild); Postorder(T->rchild); printf("%3c",T->data); } } void Leafnum(BT *T) { if(T) { if(T->lchild==NULL&&T->rchild==NULL) count++; Leafnum(T->lchild); Leafnum(T->rchild); } } void Nodenum(BT *T) { if(T) { count++; Nodenum(T->lchild); Nodenum(T->rchild); } } int TreeDepth(BT *T) { int ldep,rdep; if(T==NULL) return 0; else { ldep=TreeDepth(T->lchild); rdep=TreeDepth(T->rchild); if(ldep>rdep) return ldep+1; else return rdep+1; } }
上傳時間: 2020-06-11
上傳用戶:ccccy
#include <stdio.h> #include <stdlib.h> #define SMAX 100 typedef struct SPNode { int i,j,v; }SPNode; struct sparmatrix { int rows,cols,terms; SPNode data [SMAX]; }; sparmatrix CreateSparmatrix() { sparmatrix A; printf("\n\t\t請輸入稀疏矩陣的行數(shù),列數(shù)和非零元素個數(shù)(用逗號隔開):"); scanf("%d,%d,%d",&A.cols,&A.terms); for(int n=0;n<=A.terms-1;n++) { printf("\n\t\t輸入非零元素值(格式:行號,列號,值):"); scanf("%d,%d,%d",&A.data[n].i,&A.data[n].j,&A.data[n].v); } return A; } void ShowSparmatrix(sparmatrix A) { int k; printf("\n\t\t"); for(int x=0;x<=A.rows-1;x++) { for(int y=0;y<=A.cols-1;y++) { k=0; for(int n=0;n<=A.terms-1;n++) { if((A.data[n].i-1==x)&&(A.data[n].j-1==y)) { printf("%8d",A.data[n].v); k=1; } } if(k==0) printf("%8d",k); } printf("\n\t\t"); } } void sumsparmatrix(sparmatrix A) { SPNode *p; p=(SPNode*)malloc(sizeof(SPNode)); p->v=0; int k; k=0; printf("\n\t\t"); for(int x=0;x<=A.rows-1;x++) { for(int y=0;y<=A.cols-1;y++) { for(int n=0;n<=A.terms;n++) { if((A.data[n].i==x)&&(A.data[n].j==y)&&(x==y)) { p->v=p->v+A.data[n].v; k=1; } } } printf("\n\t\t"); } if(k==1) printf("\n\t\t對角線元素的和::%d\n",p->v); else printf("\n\t\t對角線元素的和為::0"); } int main() { int ch=1,choice; struct sparmatrix A; A.terms=0; while(ch) { printf("\n"); printf("\n\t\t 稀疏矩陣的三元組系統(tǒng) "); printf("\n\t\t*********************************"); printf("\n\t\t 1------------創(chuàng)建 "); printf("\n\t\t 2------------顯示 "); printf("\n\t\t 3------------求對角線元素和"); printf("\n\t\t 4------------返回 "); printf("\n\t\t*********************************"); printf("\n\t\t請選擇菜單號(0-3):"); scanf("%d",&choice); switch(choice) { case 1: A=CreateSparmatrix(); break; case 2: ShowSparmatrix(A); break; case 3: SumSparmatrix(A); break; default: system("cls"); printf("\n\t\t輸入錯誤!請重新輸入!\n"); break; } if (choice==1||choice==2||choice==3) { printf("\n\t\t"); system("pause"); system("cls"); } else system("cls"); } }
上傳時間: 2020-06-11
上傳用戶:ccccy
題目:基于51單片機(jī)的RS485從機(jī)系統(tǒng)設(shè)計(jì) 單片機(jī)接口資源配置: 1. 上電復(fù)位電路; 2. 晶振電路采用11.0592Mhz晶振; 3. 485接口電路(P3.7用于485芯片的收發(fā)控制,收發(fā)管腳接單片機(jī)的rxd和txd); 4. P2口通過外部跳線接相應(yīng)的高低電平,配置從機(jī)地址為組號; 5. P3.6外接一發(fā)光二極管(注意串聯(lián)電阻進(jìn)行限流); 6. P3.2外接一按鍵,斷開高電平,按下低電平; 7. 按鍵檢測采用外部中斷方式,下跳沿觸發(fā); 8. 單片機(jī)定時器0以模式1(16位模式)工作,產(chǎn)生50ms的定時中斷,并在此基礎(chǔ)上設(shè)計(jì)一單片機(jī)內(nèi)部時鐘(24小時制,能計(jì)數(shù)時、分、秒、50ms值); 9. 單片機(jī)串行通信采用模式1非多機(jī)通信方式,采用9600波特率以串行中斷方式進(jìn)行數(shù)據(jù)的收發(fā)通信,主機(jī)地址為0xF0,廣播地址為0xFF。 系統(tǒng)功能需求: 1. 系統(tǒng)配置和自檢功能: l 從機(jī)上電后進(jìn)行初始化,通過讀取P2口進(jìn)行從機(jī)地址配置; l 發(fā)光二極管以每秒一次的頻率閃爍(亮0.5秒,滅0.5秒); l 檢測到一次按鍵按下操作后,熄滅發(fā)光二極管。 2. 數(shù)據(jù)接收和按鍵計(jì)時功能: l 從機(jī)接收主機(jī)程序(PC機(jī)上的串口調(diào)試程序)的按鍵允許命令幀并進(jìn)行校驗(yàn); l 校驗(yàn)正確并且目的地址是廣播地址或者本從機(jī)的地址,通過發(fā)光二極管長亮指示,并允許按鍵操作; l 按鍵按下后,盡可能準(zhǔn)確記錄按鍵的動作時點(diǎn)(定時器的低8位、定時器的高8位、50ms值、秒、分、小時); l 按鍵操作只能響應(yīng)一次,重復(fù)按鍵操作不響應(yīng); l 按鍵的動作時點(diǎn)記錄后,發(fā)光二極管以每秒一次的頻率閃爍(亮0.5秒,滅0.5秒)。 3. 數(shù)據(jù)發(fā)送功能: l 從機(jī)接收主機(jī)程序發(fā)來的時鐘數(shù)據(jù)搜索命令幀并進(jìn)行校驗(yàn); l 如果校驗(yàn)正確并且數(shù)據(jù)幀的目的地址是本從機(jī)的地址,從機(jī)將前面記錄的按鍵動作時點(diǎn)數(shù)據(jù)(定時器的低8位、定時器的高8位、50ms值、秒、分、小時)按附錄中的時鐘數(shù)據(jù)返回幀的幀格式回傳給主機(jī); l 時鐘數(shù)據(jù)返回幀回傳結(jié)束后,熄滅發(fā)光二極管。 4. 校驗(yàn)和生成和檢測功能: l 發(fā)送數(shù)據(jù)幀時能自動生成數(shù)據(jù)幀校驗(yàn)和; l 每幀數(shù)據(jù)在發(fā)送幀尾前,發(fā)送一字節(jié)的當(dāng)前幀數(shù)據(jù)的校驗(yàn)和; l 接收數(shù)據(jù)幀時能檢測校驗(yàn)和并判斷接收數(shù)據(jù)是否正確。 附錄:幀定義 校驗(yàn)和的計(jì)算:除去幀頭和幀尾后將幀中的其他數(shù)據(jù)求和并取低8位; 幀長:不計(jì)幀頭、幀尾和校驗(yàn)和字節(jié)。 按鍵允許命令幀: 幀頭 幀長 目的地址 源地址 命令字 校驗(yàn)和 幀尾 AA 04 FF F0 01 F4 66 時鐘數(shù)據(jù)搜索命令幀: 幀頭 幀長 目的地址 源地址 命令字 保留字 校驗(yàn)和 幀尾 AA 05 01 F0 03 00 F9 66 時鐘數(shù)據(jù)返回幀: 幀頭 幀長 目的地址 源地址 命令字 TL0 TH0 50ms 秒 分 時 校驗(yàn)和 幀尾 AA 0A F0 01 07 01 B6 09 03 00 00 C5 66 幀結(jié)構(gòu)頭文件frame.h(內(nèi)容如下) //幀格式定義 #define FRAME_HEAD 0xAA //幀頭 #define FRAME_FOOT 0x66 //幀尾 #define FRAME_LEN 0x00 //幀長 #define FRAME_DST_ADR 0x01 //目的地址 #define FRAME_SRC_ADR 0x02 //源地址 #define FRAME_CMD 0x03 //命令字 #define FRAME_DATA 0x04 //幀數(shù)據(jù)起始 //幀命令定義 #define READY 0x01 //按鍵允許命令 #define TIME_SERCH 0x03 //時鐘數(shù)據(jù)輪詢命令 #define TIME_BACK 0x07 //時鐘數(shù)據(jù)返回命令 //地址定義 #define BROAD_ADR 0xFF //廣播地址 #define MASTER_ADR 0xF0 //主機(jī)地址
上傳時間: 2020-06-18
上傳用戶:umuo
lm75A溫度數(shù)字轉(zhuǎn)換器 FPGA讀寫實(shí)驗(yàn)Verilog邏輯源碼Quartus工程文件+文檔資料,FPGA為CYCLONE4系列中的EP4CE6E22C8. 完整的工程文件,可以做為你的學(xué)習(xí)設(shè)計(jì)參考。LM75A 是一個使用了內(nèi)置帶隙溫度傳感器和模數(shù)轉(zhuǎn)換技術(shù)的溫度數(shù)字轉(zhuǎn)換器。它也是一個溫度檢測器,可提供一個過熱檢測輸出。LM75A 包含許多數(shù)據(jù)寄存器:配置寄存器用來存儲器件的某些配置,如器件的工作模式、OS 工作模式、OS 極性和OS 故障隊(duì)列等(在功能描述一節(jié)中有詳細(xì)描述);溫度寄存器(Temp),用來存儲讀取的數(shù)字溫度;設(shè)定點(diǎn)寄存器(Tos & Thyst),用來存儲可編程的過熱關(guān)斷和滯后限制,器件通過2 線的串行I2C 總線接口與控制器通信。LM75A 還包含一個開漏輸出(OS),當(dāng)溫度超過編程限制的值時該輸出有效。LM75A 有3 個可選的邏輯地址管腳,使得同一總線上可同時連接8個器件而不發(fā)生地址沖突。LM75A 可配置成不同的工作條件。它可設(shè)置成在正常工作模式下周期性地對環(huán)境溫度進(jìn)行監(jiān)控或進(jìn)入關(guān)斷模式來將器件功耗降至最低。OS 輸出有2 種可選的工作模式:OS 比較器模式和OS 中斷模式。OS 輸出可選擇高電平或低電平有效。故障隊(duì)列和設(shè)定點(diǎn)限制可編程,為了激活OS 輸出,故障隊(duì)列定義了許多連續(xù)的故障。溫度寄存器通常存放著一個11 位的二進(jìn)制數(shù)的補(bǔ)碼,用來實(shí)現(xiàn)0.125℃的精度。這個高精度在需要精確地測量溫度偏移或超出限制范圍的應(yīng)用中非常有用。正常工作模式下,當(dāng)器件上電時,OS 工作在比較器模式,溫度閾值為80℃,滯后75℃,這時,LM75A就可用作一個具有以上預(yù)定義溫度設(shè)定點(diǎn)的獨(dú)立的溫度控制器。module LM75_SEG_LED ( //input input sys_clk ,input sys_rst_n ,inout sda_port ,//output output wire seg_c1 ,output wire seg_c2 ,output wire seg_c3 ,output wire seg_c4 ,output reg seg_a ,output reg seg_b ,output reg seg_c ,output reg seg_e ,output reg seg_d ,output reg seg_f ,output reg seg_g ,output reg seg_h , output reg clk_sclk );//parameter define parameter WIDTH = 8;parameter SIZE = 8;//reg define reg [WIDTH-1:0] counter ;reg [9:0] counter_div ;reg clk_50k ;reg clk_200k ;reg sda ;reg enable ;
標(biāo)簽: lm75a 數(shù)字轉(zhuǎn)換器 fpga verilog
上傳時間: 2021-10-27
上傳用戶:
IIC接口E2PROM(AT24C64) 讀寫VERILOG 驅(qū)動源碼+仿真激勵文件:module i2c_dri #( parameter SLAVE_ADDR = 7'b1010000 , //EEPROM從機(jī)地址 parameter CLK_FREQ = 26'd50_000_000, //模塊輸入的時鐘頻率 parameter I2C_FREQ = 18'd250_000 //IIC_SCL的時鐘頻率 ) ( input clk , input rst_n , //i2c interface input i2c_exec , //I2C觸發(fā)執(zhí)行信號 input bit_ctrl , //字地址位控制(16b/8b) input i2c_rh_wl , //I2C讀寫控制信號 input [15:0] i2c_addr , //I2C器件內(nèi)地址 input [ 7:0] i2c_data_w , //I2C要寫的數(shù)據(jù) output reg [ 7:0] i2c_data_r , //I2C讀出的數(shù)據(jù) output reg i2c_done , //I2C一次操作完成 output reg i2c_ack , //I2C應(yīng)答標(biāo)志 0:應(yīng)答 1:未應(yīng)答 output reg scl , //I2C的SCL時鐘信號 inout sda , //I2C的SDA信號 //user interface output reg dri_clk //驅(qū)動I2C操作的驅(qū)動時鐘 );//localparam definelocalparam st_idle = 8'b0000_0001; //空閑狀態(tài)localparam st_sladdr = 8'b0000_0010; //發(fā)送器件地址(slave address)localparam st_addr16 = 8'b0000_0100; //發(fā)送16位字地址localparam st_addr8 = 8'b0000_1000; //發(fā)送8位字地址localparam st_data_wr = 8'b0001_0000; //寫數(shù)據(jù)(8 bit)localparam st_addr_rd = 8'b0010_0000; //發(fā)送器件地址讀localparam st_data_rd = 8'b0100_0000; //讀數(shù)據(jù)(8 bit)localparam st_stop = 8'b1000_0000; //結(jié)束I2C操作//reg definereg sda_dir ; //I2C數(shù)據(jù)(SDA)方向控制reg sda_out ; //SDA輸出信號reg st_done ; //狀態(tài)結(jié)束reg wr_flag ; //寫標(biāo)志reg [ 6:0] cnt ; //計(jì)數(shù)reg [ 7:0] cur_state ; //狀態(tài)機(jī)當(dāng)前狀態(tài)reg [ 7:0] next_state; //狀態(tài)機(jī)下一狀態(tài)reg [15:0] addr_t ; //地址reg [ 7:0] data_r ; //讀取的數(shù)據(jù)reg [ 7:0] data_wr_t ; //I2C需寫的數(shù)據(jù)的臨時寄存reg [ 9:0] clk_cnt ; //分頻時
標(biāo)簽: iic 接口 e2prom at24c64 verilog 驅(qū)動 仿真
上傳時間: 2021-11-05
上傳用戶:
C語言各知識點(diǎn)詳細(xì)總結(jié)27頁C 語言知識要點(diǎn)復(fù)習(xí)資料 總體上必須清楚的: 1)程序結(jié)構(gòu)是三種: 順序結(jié)構(gòu) 、選擇結(jié)構(gòu)(分支結(jié)構(gòu))、循環(huán)結(jié)構(gòu)。 2)讀程序都要從 main()入口, 然后從最上面順序往下讀(碰到循環(huán)做循環(huán),碰到選擇做選擇),有 且只有一個 main 函數(shù)。 3)計(jì)算機(jī)的數(shù)據(jù)在電腦中保存是以 二進(jìn)制的形式. 數(shù)據(jù)存放的位置就是 他的地址. 4)bit 是位 是指為 0 或者 1。 byte 是指字節(jié), 一個字節(jié) = 八個位. 概念常考到的: 1、編譯預(yù)處理不是 C 語言的一部分,不占運(yùn)行時間,不要加分號。C 語言編譯的程序稱為源程 序,它以 ASCII 數(shù)值存放在文本文件中。 2、define PI 3.1415926; 這個寫法是錯誤的,一定不能出現(xiàn)分號。 3、每個 C 語言程序中 main 函數(shù)是有且只有一個。 4、在函數(shù)中不可以再定義函數(shù)。 5、算法:可以沒有輸入,但是一定要有輸出。 6、break 可用于循環(huán)結(jié)構(gòu)和 switch 語句。 7、逗號運(yùn)算符的級別最低,賦值的級別倒數(shù)第二。 第一章 C 語言的基礎(chǔ)知識 第一節(jié)、對 C 語言的基礎(chǔ)認(rèn)識 1、C 語言編寫的程序稱為源程序,又稱為編
標(biāo)簽: C語言
上傳時間: 2021-11-06
上傳用戶:kent
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1