zhliao2

风雨兼程,一路向北-------fpga (Keep a quiet heart study)

07 2012 档案

波特率,位周期
摘要:以下以9600bps为讲解对象,其他的波特率算法是一样的波特率"9600bps"表示每秒可以传输9600位一个位的周期 = 1/bps = 1/9600 = 0.000104166666666667那么一秒钟内可以传输1/0.00114583333333334=872.727272727268872.727272727268个帧数据。当然这只是在数字上计算出来而已,但是实际上还有许多看不见的延迟因数。 阅读全文

posted @ 2012-07-18 14:04 zhliao 阅读(4542) 评论(1) 推荐(0)

关于分频,帧的小常识
摘要:如果640x480x60Hz的主要时钟频率是25.175Mhz的话,亦即1个列像素是39.7ns,那么可以用更高的源时钟是求得39.7ns的定时。说得简单一点就是配置一个定时器。假设源时钟是100Mhz,定时器的计数x是:x = 0.0397us / ( 1/100MHz )us = 3.97 = 4说明了用100MHz的计数要达到39.7ns就要大约计数4次800x600x60Hz最后一字的“60Hz”,表示该显示标准,在1秒内可以显示60帧图像(一帧等于一副图像)。以800x600x60Hz为说明对象我们知道1个行像素等于1056个列像素,而一个列像素需要25ns。换一句话说,一“帧”的图 阅读全文

posted @ 2012-07-17 16:18 zhliao 阅读(404) 评论(0) 推荐(0)

怎么使用PLL(20MHz倍频40MHz)
摘要:步骤如下图所示:1--在tool--MegaWizard Plug-In Manager2--点击Creat a new custom megafunction variation3--点击I0-ALTPLL,选择Verilog HDL,Cyclone IV E, 在FPGA_ceshi后命名pll_module,Z最后点击Next4--选取输入晶振为20MHz,点击Next5--取消划线部分打勾的,点击Next6--点击Next知道出现如下图表,选取Clock multiplication factor 为2,说明要倍频为2,相应的输出频率就变为了40MHz,点击Next7--一直点击Nex 阅读全文

posted @ 2012-07-17 11:59 zhliao 阅读(966) 评论(0) 推荐(0)

a[ i ][ j ]中的不同表达有不同意义的地址概念( a + 1, a[ 1 ]等 )
摘要:有二维数组a[ i ][ j ],一下都满足二维数组的条件a 二维数组名,指向一维数组a[ 0 ],即0行的首地址a[ 0 ], *( a + 0 ), *a 0行0列元素的地址 a + 1, &a[ 1 ] 1行首地址a[ 1 ], *( a + 1 ) 1行0列元素a[ 1 ][ 0 ]的地址a[ 1 ] + 2, *( a + 1 ) + 2, &a[ 1 ][ 2 ] 1行两列元素a[ 1 ][ 2 ]的地址*( a[ 1 ] + 2 ... 阅读全文

posted @ 2012-07-15 14:27 zhliao 阅读(431) 评论(0) 推荐(0)

指向多维数组的指针变量(int *p 和 int ( *p )[ N ])
摘要:int a[ 4 ];a有四个元素,每个元素为整型int ( *p )[ 4 ]; //4为二维是在的后面的一个数*p有4个元素,每个元素为整型,也就是说p所指的的对象有4个整型元素的数组即p是一维数组的指针( p只是指向一个包含有4个元素的一维数组,p的值就是该一维数组的起始地址 )程序数组为int a[3][4] = { 1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23 };经常搞混淆int *p和int ( *p )[ 4 ]可参考以下程序# include <stdio.h>int main ( void ){ int a[3][4] = 阅读全文

posted @ 2012-07-15 14:14 zhliao 阅读(605) 评论(0) 推荐(0)

字符串与指针
摘要://以两种方法将字符串a复制到位字符串b//一:下标方法,字符串是以'\0'结束的,所以最后别忘了把'\0'加回去# include <stdio.h>int main ( void ){ char a[] = "I am boy.", b[ 20 ], *p1, *p2; int i; p1 = a; p2 = b; for ( ; *p1 != '\0'; p1 ++, p2 ++ ) *p2 = *p1; *p2 = '\0'; printf ( "string a is:%s\n& 阅读全文

posted @ 2012-07-15 14:14 zhliao 阅读(265) 评论(0) 推荐(0)

返回指针值的函数
摘要:int *a ( int x, int y );a是函数名,调用它以后能得到一个指向整型数据的指针.*a两侧没有括号,在a的两侧分别为*运算符和()运算符而()的优先级高于*.因此a先与()先结合,这个函数前面有*,表示此函数是指针型函数,最前面的int表示返回的指针指向整型变量.eg:有三个学生,每个学生有4门课,功能:用户输入学生序号,就能输出该学生的成绩# include <stdio.h>int main ( void ){ float score [][4] = { { 60, 70, 80, 90 }, { 56, 89, 67, 88 }, { 34, 78, 90, 阅读全文

posted @ 2012-07-15 11:57 zhliao 阅读(270) 评论(0) 推荐(0)

指针的小结
摘要:int i; 定义整形的变量i.int *p; p为指向整形数据的指针指针变量int a[ n ]; 定义整形数组a,它有n个元素int *p[ n ]; 定义指针数组p,它由n个指向整形数据的指针元素组成int ( *P )[ n ]; p为指向含有n个元素的一维数组的指针变量int f (); f为返回整形函数值的函数int *p(); p为返回一个指针的函数,该指针指向整形数据int ( *p )(); p为指向函数的指针,该函数返回一... 阅读全文

posted @ 2012-07-15 11:34 zhliao 阅读(174) 评论(0) 推荐(0)

指向函数的指针
摘要:看看注释部分,总是被这有无括号搞晕,所以现在只有强记了先,`(*∩_∩*)′c = ( *p )( a, b );等价于c = max ( a, b );# include <stdio.h>int main ( void ){ int max ( int, int ); int ( *p )( int, int ); int a, b, c; p = max; //这里的函数名代表的是该函数的入口地址 scanf ( "%d, %d", &a, &b ); c = ( *p )( a, b ); //注意了,这里*p两侧的括号不可以省略,表示. 阅读全文

posted @ 2012-07-15 11:13 zhliao 阅读(198) 评论(0) 推荐(0)

单总线驱动程序(DS18B20)
摘要:sbit DQ=P3^7; //DS18B20数据传输线接单片机的相应的引脚void delaymm(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}//向DS18B20读一字节数据 ,从低位开始读ReadOneChar(void) { unsigned char i=0; unsigned char dat=0; for (i=8;i>0;i--) { DQ=1; delay(1); DQ=0; dat>>=1; //把读到的左移一位,形成了一个字节 ... 阅读全文

posted @ 2012-07-12 16:09 zhliao 阅读(1438) 评论(0) 推荐(0)

1602驱动程序
摘要:sbit lcdrs=P1^0;sbit lcdrw=P1^1;sbit lcden=P1^2;void delaymm(uint z){ uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--);}void delay(unsigned int k){ unsigned int n; n=0; while(n < k) {n++;} return;}void write_cmd(uchar cmd){ lcden=0; lcdrs=0; lcdrw=0; P0=cmd; _nop_(); lcden=1; delaymm(1); lcden 阅读全文

posted @ 2012-07-12 16:07 zhliao 阅读(454) 评论(0) 推荐(0)

【转】TTL电平与RS232电平的区别
摘要:什么是TTL电平、CMOS电平、RS232电平?它们有什么区别呢?一般说来,CMOS电平比TTL电平有着更高的噪声容限。(一)、TTL电平标准 输出 L: <0.8V ; H:>2.4V。 输入 L: <1.2V ; H:>2.0V TTL器件输出低电平要小于0.8V,高电平要大于2.4V。输入,低于1.2V就认为是0,高于2.0就认为是1。于是TTL电平的输入低电平的噪声容限就只有(0.8-0)/2=0.4V,高电平的噪声容限为(5-2.4)/2=1.3V。(二)、CMOS电平标准 输出 L: <0.1*Vcc ; H:>0.9*Vcc。 输入 L: &l 阅读全文

posted @ 2012-07-11 13:21 zhliao 阅读(433) 评论(0) 推荐(0)

MCU发送一个字符串后(复位有效),后等待PC发送并又返回给PC显示
摘要:晶振11.0592MHz,发送和接收使用的格式相同,如都使用字符型格式,按下复位键,则PC显示Crazy_Didong!,在单子串发送去填入相应的字符串/字符,则PC显示相应的字符串/字符。#include<reg52.h> //串口初始化void InitUART (void){ SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装 ... 阅读全文

posted @ 2012-07-08 14:26 zhliao 阅读(521) 评论(0) 推荐(0)

MCU发送字符串或字符给PC(字符格式,ASCII格式)
摘要:晶振11.0592MHz,发送和接收使用的格式相同,都使用字符型格式,PC一直接受的Crazy_Didong!#include<reg52.h> #define uint unsigned int//串口初始化void InitUART (void){ SCON = 0x50; // SCON: 模式 1, 8-bit UART, 使能接收 TMOD |= 0x20; // TMOD: timer 1, mode 2, 8-bit 重装 TH1 = 0xFD; ... 阅读全文

posted @ 2012-07-08 13:42 zhliao 阅读(1117) 评论(0) 推荐(0)

AD/DA PCF8591
摘要:I2C驱动程序:void delay(){; ;}void delay1ms ( uint z ){ uint x, y; for ( x = z; x > 0; x -- ) for ( y = 110; y > 0; y -- );}void start ( ) //开始{ sda = 1; delay (); scl = 1; delay (); sda = 0; delay ();}void stop () //停止{ sda = 0; delay (); scl = 1; delay ();... 阅读全文

posted @ 2012-07-07 14:00 zhliao 阅读(310) 评论(0) 推荐(0)

I2C驱动程序
摘要:void delay(){; ;}void delay1ms ( uint z ){ uint x, y; for ( x = z; x > 0; x -- ) for ( y = 110; y > 0; y -- );}I2C启动:在SCL为高电平期间,SDA出现下降沿void start_I2C ( ) /{ sda = 1; delay (); scl = 1; delay (); sda = 0; delay ();}I2C停止:在SCL高电平期间,SDA上产生一上升沿void stop_I2C () //停止{ sda = 0; delay (); scl = 1; de 阅读全文

posted @ 2012-07-07 11:14 zhliao 阅读(239) 评论(0) 推荐(0)

暑假规划
摘要:1,完成电子设计大赛的项目了2,<<c和指针>>过一遍----学完汇编这个应该不难,嘻嘻3,<<项目驱动--单片机应用设计基础>>要look look,最好了解一下什么是TinyOs4, <<基于VHDL的FPGA和NoisII实例精炼>>5,<<VerilogHDL那些事儿_建模篇v5>>起床:7:00休息:1:00哎呀,已经N久没动FPGA了,买了黑金800多的开发板没动她实在是很浪费,里面这么好的资源没去弄很可惜,说这个也就算了,而我连建模的都没搞多少,实在有点见笑了,总是有点借口说没什么时间 阅读全文

posted @ 2012-07-04 01:24 zhliao 阅读(212) 评论(0) 推荐(0)

下载百度文库
摘要:在搜索引擎的框框里输入:site:wenku.baidu.com 题目注意题目前面的空格不要省略eg :site:wenku.baidu.com基于无线传感器网络的智能家居系统的设计然后打开百度快照就ok了 阅读全文

posted @ 2012-07-03 10:51 zhliao 阅读(258) 评论(0) 推荐(0)