zhliao2

风雨兼程,一路向北-------fpga (Keep a quiet heart study)
上一页 1 ··· 4 5 6 7 8

2012年3月31日

亚稳态

摘要: 原文:http://www.cnblogs.com/linjie-swust/archive/2012/01/07/YWT.html1. 应用背景1.1 亚稳态发生原因 在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上, 阅读全文

posted @ 2012-03-31 20:48 zhliao 阅读(452) 评论(0) 推荐(1)
FPGA查找表

摘要: 原文:http://blog.csdn.net/zhongrg/article/details/1860045一.查找表(Look-Up-Table)的原理与结构采用这种结构的PLD芯片我们也可以称之为FPGA:如altera的ACEX,APEX系列,xilinx的Spartan,Virtex系列等。查找表(Look-Up-Table)简称为LUT,LUT本质上就是一个RAM。 目前FPGA中多使用4输入的LUT,所以每一个LUT可以看成一个有4位地址线的16x1的RAM。 当用户通过原理图或HDL语言描述了一个逻辑电路以后,PLD/FPGA开发软件会自动计算逻辑电路的所有可能的结果,并把结果 阅读全文

posted @ 2012-03-31 20:40 zhliao 阅读(5695) 评论(0) 推荐(0)
数据类型的不同实现相同功能:代码的区别

摘要: 1 //把内部ram40H和41H的内容分别给外部RAM100H和101H 2 #include <reg51.h> 3 4 void main (void) 5 { 6 //注意了这里用到的是unsigned char数值范围是0~256即是占用了一个内存单元,所以要定义两个指针变量 7 unsigned char xdata *xdp1; //因为外部的RAM100H和101H已经超出了256,所以要用位数为16位的xdata; 8 unsigned char xdata *xdp2; 9 unsigned char data *dp1;1... 阅读全文

posted @ 2012-03-31 20:03 zhliao 阅读(426) 评论(0) 推荐(0)
有限状态机设计

摘要: 原文:http://www.cnblogs.com/kongtiao/archive/2011/09/25/2190226.html数字系统有两大类有限状态机(Finite State Machine,FSM):Moore状态机和Mealy状态机。Moore状态机 其最大特点是输出只由当前状态确定,与输入无关。Moore状态机的状态图中的每一个状态都包含一个输出信号。这是一个典型的Moore状态机的状态跳转图,x、y、z是输入,a、b、c是输出。 Mealy状态机 它的输出不仅与当前状态有关系,而且与它的输入也有关系,因而在状态图中每条转移边需要包含输入和输出的信息。状态编码 数字... 阅读全文

posted @ 2012-03-31 14:03 zhliao 阅读(377) 评论(0) 推荐(0)

2012年3月29日

数码管0~9的显示,延时1s(没有通过用计数器的延时)

摘要: ;NAME: 数码管0~9的显示 ;AUTOR: ;TIEE: 2012年3月29日 13:22:22 ;CONTENT: 数码管0~9的显示,延时1s(没有通过用计数器的延时) 6 ORG 0000H 7 SJMP MAIN 8 ORG 0030H 9 MAIN:10 LOOP1: MOV A, #00H11 MOV R5,#00H12 MOV DPTR, #TAB ;首地址即0C0HQA的地址13 LOOP2: 14 MOV A, R515 MOVC A, @A+DPTR16 MOV P1, A17 CALL DELAY18 CJNE R5, #0AH , FLAG ;比较R5是否等... 阅读全文

posted @ 2012-03-29 13:35 zhliao 阅读(746) 评论(0) 推荐(0)
小小常识

摘要: 单片机能够执行的指令共有111条,只需一个机器周期的指令有64条,两个机器周期的指令有45条,而4个机器周期的指令仅有两条(乘法和除法)。指令的符号:/位操作的前缀,表示对该位取反。直接寻址:指的是内部数据存储器中存放的数据的地址,或存放数据的一个特殊功能寄存器地址,eg MOV A, 30H。寄存器寻址:寻址范围,4个工作寄存器组共32个通用寄存器(R0~R7),eg MOV A, R5。寄存器间接寻址:寻址范围,内部低128字节单元(只能使用R0和R1做间接寄存器), eg MOV A, @R0。基址加变址:MCS-51单片机的基址加变址只能对程序存储器进行寻址,eg MOVC A, @A 阅读全文

posted @ 2012-03-29 08:35 zhliao 阅读(816) 评论(0) 推荐(0)

2012年3月28日

【转】建立时间和保持时间

摘要: 如图所示,当时钟为高电平是,Q随D变化而变化;而当时钟为高电平时,Q值保持不变。图3.4所示为门控D触发器基本时序参数模型。在clk下降沿到来之前,D必须保持稳定的最短时间叫做锁存器的建立时间t_su,在clk的下降沿之后,D必须保持稳定的最短时间叫做锁存器的保持时间t_h。图3.4 门控D触发器基本时序参数4 亚稳态图4.1 异步复位的D-ff图4.2 触发器的时序参数如图4.2所示,在clk的上升沿到来之前,D必须保持稳定的最短时间为触发器的建立时间t_su;在clk的上升沿到来之后,D必须保持稳定的最短时间为触发器的保持时间t_h。如果t_su或t_h不能严格达到电路的要求,那么触发器就 阅读全文

posted @ 2012-03-28 20:39 zhliao 阅读(544) 评论(0) 推荐(0)
【转】算术移位和逻辑移位的区别

摘要: 逻辑移位(不管是左移位还是右移位) 都是空缺处补0 例如: mov ax , 1100_0111_0110_1000B mov cl , 3 shl ax , cl ; 结果 ax = 0011_1011_0100_0000 mov ax , 1100_0111_0110_1000B mov cl , 3 shr ax , cl ; 结果 ax = 0001_1000_1110_1101 算术移位要保证符号位的不改变(逻辑左移位补0, 逻辑右移位看符号位) 例如: mov ax , 1100_0111_0110_1000B mov cl , 3 sal ax , cl ; 结果 ax = 0. 阅读全文

posted @ 2012-03-28 18:51 zhliao 阅读(1210) 评论(0) 推荐(0)

2012年3月27日

【转】 event的使用

摘要: module hardreg_top(qout); output[3:0] qout; reg clock,clearb; reg[3:0] data; event end_first_pass; ---------------》28行 `define stim #10 data=4'b hardreg reg_4bit(data,clcok,clearb,qout); //调用另个模块。 initial begin clock = 0; clearb = 1;... 阅读全文

posted @ 2012-03-27 09:03 zhliao 阅读(240) 评论(0) 推荐(0)
[转]defparam参数和可移植模块

摘要: 1 常量HDL代码经常在表达式和数组的边界使用常量。这些值在模块内是固定的,不可修改。一个很好的设计惯例是用符号常量取代这些hard literal,这样做可使代码清晰,便于后续维持及修改。在Verilog中,可以使用localparam(本地参数)来声明常量。比方说,我们可以声明一个数据总线的位宽及数据范围为:?12localparam DATA_WIDYH = 8,DATA_RANGE = 2**DATA_WIDYH - 1;或者定义一个符号端口名称:?123localparam UART_PORT = 4'b0001,LCD_PORT = 4'b0010,MOUSE_PO 阅读全文

posted @ 2012-03-27 08:09 zhliao 阅读(378) 评论(0) 推荐(0)

2012年3月25日

当你发生sopcError: Can't recognize silicon ID for device 1现象时

摘要: 转载:Error: Can't recognize silicon ID for device 11。确认你的QII中选择的配置芯片是否和电路板中的芯片一致2。检查你的下载线是否损坏,据说下载线长不应该超过30CM 但是我自己做的大概有50CM也可以正常使用3。确定你的配置芯片是否损坏,可以使用JTAG烧写配置芯片测试下,如果可写 那就可以排除该错误4。检查你的电路中的AS模式中的上拉电阻和下拉电阻是否虚焊,还有MSEL0与MSEL1是否选择正确和nSTATUS是否接上拉电阻等再不行就这样看看:5.请到QuartusII的setting->devices->pins &am 阅读全文

posted @ 2012-03-25 21:39 zhliao 阅读(1934) 评论(0) 推荐(0)
DS1302驱动程序

摘要: #define WRITE_SECOND 0x80#define WRITE_MINUTE 0x82#define WRITE_HOUR 0x84#define READ_SECOND 0x81#define READ_MINUTE 0x83#define READ_HOUR 0x85#define WRITE_PROTECT 0x8E// 位寻址寄存器定义sbit ACC_7 = ACC^7;// 管脚定义sbit SCLK = P3^5; // DS1302 时钟信号7 脚sbit DIO= P3^6; // DS1302数据信号6 脚sbit CE = P3^7; // DS1302 片 阅读全文

posted @ 2012-03-25 21:11 zhliao 阅读(1195) 评论(0) 推荐(0)
读和写

摘要: 如果要执行读引脚时,首先要在这个引脚IO口写1(单片机内部结构的需要,否则的话会在任何时候读入的都是低电平)输入(读引脚)MOV P1, #0FFHMOV P1, #DATA输出(写引脚)MOV P1, #DATA注意:MOVX A, @RI, AMOVX A, @RI都是写操作MOV @DPTR, A 要用到的是P0和P2口当作地址总线 阅读全文

posted @ 2012-03-25 21:09 zhliao 阅读(327) 评论(0) 推荐(0)
BCD码/DA指令

摘要: BCD码(Binary-Coded Decimal‎)亦称二进码十进数或二-十进制代码。用4位二进制数来表示1位十进制数中的0~9这10个数码。是一种二进制的数字编码形式,用二进制编码的十进制代码BCD码的运算规则:BCD码是十进制数,而运算器对数据做加减运算时,都是按二进制运算规则进行处理的。这样,当将 BCD码传送给运算器进行运算时,其结果需要修正。修正的规则是:当两个BCD码相加,如果和等于或小于 1001(即十进制数 9),不需要修正;如果相加之和在 1010 到1111(即十六进制数 0AH~0FH)之间,则需加 6 进行修正;如果相加时,本位产生了进位,也需加 6 进行修正。这样做 阅读全文

posted @ 2012-03-25 21:08 zhliao 阅读(7049) 评论(0) 推荐(0)
上一页 1 ··· 4 5 6 7 8