摘要: 自从苹果发布了新MacBook,USB Type-C接口就成为了热议对象。我来从硬件角度解析下这个USB Type-C,以便大家更好的了解USB Type-C的工作原理。特色尺寸小,支持正反插,速度快(10Gb)。这个小是针对以前电脑上的USB接口说的,实际相对android机上的microUSB还 阅读全文
posted @ 2017-05-18 20:52 我心狂野 阅读(8201) 评论(0) 推荐(1) 编辑
摘要: OpenCore原来使用的是CVS管理代码的。从09年起,更换用SVN管理代码,大家可以用TortoiseSVN软件下载代码,网址是:http://tortoisesvn.net/,安装后tortoiseSVN会和window的资源管理器右键菜单紧密结合在一起,使用起来非常方便。 在资源浏览器的一个空文件夹下点右键,选择SVN Checkout输入我们需要的代码URL,即可下载代码 以我们主要... 阅读全文
posted @ 2013-11-15 23:43 我心狂野 阅读(1859) 评论(0) 推荐(0) 编辑
摘要: #include #include int main( void ){ FILE *stream; typedef struct _tt{ int a; int b; char buf[20]; }tt;//定义结构体 tt temp; temp.a=10; temp.b=20; strcpy(temp.buf,"hello");//为结构体赋值 int c=sizeof(temp); stream= fopen("at.dat","w+");//打开文件 fwrite(&temp,sizeof(temp),1,stream) 阅读全文
posted @ 2013-11-10 14:03 我心狂野 阅读(994) 评论(0) 推荐(0) 编辑
摘要: Introduction Our final project is a full hardware UDP (User Datagram Protocol) stack for the DE2 evaluation board that interfaces with the DM9000A MAC/PHY chip on the board. It inc... 阅读全文
posted @ 2012-09-08 16:22 我心狂野 阅读(789) 评论(0) 推荐(0) 编辑
摘要: Introduction Our project was to design an interface that enabled the FPGA board to communicate with other devices via the on-board Ethernet connection following several established networking protoco... 阅读全文
posted @ 2012-09-08 16:20 我心狂野 阅读(3181) 评论(0) 推荐(0) 编辑
摘要: 以太网PHY和MAC对应OSI模型的两个层——物理层和数据链路层。 物理层定义了数据传送与接收所需要的电与光信号、线路状态、时钟基准、数据编码和电路等,并向数据链路层设备提供标准接口(RGMII / GMII / MII)。 数据链路层则提供寻址机构、数据帧的构建、数据差错检查、传送控制、向网络层提供标准的数据接口等功能。 问:以太网PHY是什么? 答:PHY是物理接口收发器,它实现... 阅读全文
posted @ 2012-09-01 00:27 我心狂野 阅读(17688) 评论(0) 推荐(0) 编辑
摘要: DDR SDRAM全称为Double Data Rate SDRAM,中文名为“双倍数据流SDRAM”。DDR SDRAM在原有的SDRAM的基础上改进而来。也正因为如此,DDR能够凭借着转产成本优势来打败昔日的对手RDRAM,成为当今的主流。本文只着重讲讲DDR的原理和DDR SDRAM相对于传统SDRAM(又称SDR SDRAM)的不同。DDR的核心频率、时钟频率和数据传输频率:核心频率就是内存的工作频率;DDR1内存的核心频率是和时钟频率相同的,到了DDR2和DDR3时才有了时钟频率的概念,就是将核心频率通过倍频技术得到的一个频率。数据传输频率就是传输数据的频率。DDR1预读取是2位,D 阅读全文
posted @ 2012-09-01 00:22 我心狂野 阅读(107361) 评论(2) 推荐(16) 编辑
摘要: 1.什么是交换机 交换机也叫交换式集线器,它通过对信息进行重新生成,并经过内部处理后转发至指定端口,具备自动寻址能力和交换作用,由于交换机根据所传递信息包的目的地址,将每一信息包独立地从源端口送至目的端口,避免了和其他端口发生碰撞。广义的交换机就是一种在通信系统中完成信息交换功能的设备。 2.交换机的工作原理 在计算机网络系统中,交换机是针对共享工作模式的弱点而推出的。集线器是采用共享工作模式的代表,如果把集线器比作一个邮递员,那么这个邮递员是个不认识字的“傻瓜”--要他去送信,他不知道直接根据信件上的地址将信件送给收信人,只会拿着信分发给所有的人,然后让接收的人根据地址信息来判断是不是自己的 阅读全文
posted @ 2012-08-20 09:04 我心狂野 阅读(10829) 评论(0) 推荐(0) 编辑
摘要: `define:可以跨模块的定义;parameter:本module内有效的定义,可用于参数传递;localparam:本module内有效的定义,不可用于参数传递;localparam cannot be used within the module port parameter list.所以,一般情况下,状态机的参数都是用localparam的。 阅读全文
posted @ 2012-07-09 15:21 我心狂野 阅读(5201) 评论(0) 推荐(0) 编辑
摘要: 从D触发器的角度说明建立和保持时间 阅读全文
posted @ 2012-06-27 08:43 我心狂野 阅读(813) 评论(0) 推荐(1) 编辑
摘要: IP核作为SoC设计的重要组成部分,其重要性不言而喻。不过,IP搭载的情况却不容乐观。在去年IC设计十周年年会上,“滥用IP核”被指出是当前影响本土IC设计业发展的三大症结之一。在业界甚至还有一种说法,本土IC企业被称为“IP核组装工”。那么,过于依赖IP核会带来哪些不良影响?是什么原因导致IP核的过于依赖,又该如何扭转该现状?为此记者进行了深入采访,希望从中找到相关解答。 过度依赖IP降低设计... 阅读全文
posted @ 2012-05-22 15:07 我心狂野 阅读(797) 评论(0) 推荐(0) 编辑
摘要: 在开篇前先推荐两篇文档,一篇是altera的官方文档 Appling Multicycle Execptions in the TimeQuest Timing Analyzer ,另一篇是riple兄很早之前推荐过的Multicycles Exception Between Two Synchronous Clock,这两篇都是关于多周期约束很好的上手文档,虽然可以快速上手解决当务之急,但事后不... 阅读全文
posted @ 2012-05-17 11:13 我心狂野 阅读(8345) 评论(5) 推荐(5) 编辑
摘要: 最近在altera FPGA里设计一个外设的驱动模块,模块本身逻辑很简单如下图所示,但是模块和外设之间的时序约束问题搞的很头疼,今天先讲讲总结的一些Timequest下外设约束方法,特别是那毫无用户体验而言的Create Generated Clocks用法。 要让外设正确接收FPGA发出的数据,需要dout和clkout满足外设的建立保持时间,如下图所示。 时序分析是基于源reg的Tco... 阅读全文
posted @ 2012-05-17 10:18 我心狂野 阅读(8710) 评论(0) 推荐(0) 编辑
摘要: 这篇我想分享一个之前在用TimeQuest约束双边沿模块的input delay时犯得一个错误,有人看了可能会觉得傻傻的,什么眼神,falling delay和 falling clk怎么会分不清呢,字面意思好区分,可要深究在约束里的具体含义,还得花点功夫,下面以ddio接收模块为例说明它们的含义以及碰到的一些问题。 ddio接收模块为双边沿工作模式,如图一所示,ddio_in接入DFFH和DFF... 阅读全文
posted @ 2012-05-17 10:08 我心狂野 阅读(1724) 评论(0) 推荐(0) 编辑
摘要: 建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold time)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。建立与保持时间的简单示意图如下图1所示。 图1 保持时间与建立时间的示意图 在FPGA设计的同一个模块中常常... 阅读全文
posted @ 2012-05-14 15:43 我心狂野 阅读(10634) 评论(0) 推荐(4) 编辑
摘要: 近年来随着Internet/Intranet的迅猛发展和B/S计算模式的广泛应用,跨地域、跨网络的业务急剧增长,业界和用户深感传统的路由器在网络中的瓶颈效应。 而三层交换机既可操作在网络协议的第三层,起到路由决定的作用,又具有几乎达到第二层交换的速度,且价格相对较低。 一时间,三层交换机将取代路由器成为网络界最流行的话题。但事实果真如此吗? 传统的路由器在网络中有路由转发、... 阅读全文
posted @ 2012-05-06 07:29 我心狂野 阅读(31033) 评论(1) 推荐(1) 编辑
摘要: 占空比:对于一串理想的脉冲序列中(如方波),正脉冲的持续时间与脉冲总周期的比值,叫做这个方波的占空比。分频分为奇分频和偶分频第一,偶数倍分频:偶数倍分频应该是大家都比较熟悉的分频,通过计数器计数是完全可以实现的。如进行N倍偶数分频,那么可以通过由待分频的时钟触发 计数器计数,当计数器从0计数到N/2-1时,输出时钟进行翻转,并给计数器一个复位信号,使得下一个时钟从零开始计数。以此循环下去。这种方法可以实现 任意的偶数分频。 第二:奇数倍分频:奇数倍分频常常在论坛上有人问起,实际上,奇数倍分频有两种实现方法:首先,完全可以通过计数器来实现,如进行三分频,通过待分频时钟 上升沿触发计数器进行模三计 阅读全文
posted @ 2012-04-25 14:38 我心狂野 阅读(7535) 评论(0) 推荐(0) 编辑
摘要: 引用肯定会指向一个对象,在 C++里,引用应被初始化.不存在指向空值的引用这个事实意味着使用引用的代码效率比使用指针的要高.因为在使用引用之前不需要测试它的合法性。相反,指针则应该总是被测试,防止其为空.指针与引用的另一个重要的不同是指针可以被重新赋值以指向另一个不同的对象.但是引用则总是指向在初始化时被指定的对象,以后不能改变.总的来说,在以下情况下你应该使用指针,一是你考虑到存在不指向任何对象的可能(在这种情况下,你能够设置指针为空),二是你需要能够在不同的时刻 指向不同的对象(在这种情况下,你能改变指针的指向).如果总是指向一个对象并且一旦指向一个对象后就不会改变指向,那么你应该使用引用 阅读全文
posted @ 2012-04-24 14:14 我心狂野 阅读(324) 评论(0) 推荐(1) 编辑
摘要: 各种不同的 IRC 客户端除了一些使用区别,其他功能基本类似。Erc,Xchat, irssi 等基本操作也都建立在对于 IRC 使用方式的基础之上。可能不同的客户端 提供不同的方式执行一些 IRC 命令,但是直接输入对应的 IRC 命令也可以。 IRC 本文示例,默认连接的 IRC 服务器为 : irc.freenode.net 加入 channel (房间) 当我们连接到一个 IR... 阅读全文
posted @ 2012-04-19 15:23 我心狂野 阅读(1973) 评论(0) 推荐(0) 编辑
摘要: USB总线接口层:物理连接、电气信号环境、信息包传输机制;主机一方由USB主控制器和根集线器组成,而USB方则由设备中的USB接口组成。 USB设备层:由主机方的USB系统软件和设备方的USB设备逻辑视图组成。 USB功能层:代表客户软件和一个给定的设备功能接口之间的关系。 USB系统软件执行很多关键的功能,包括: 设备的连接/断开检测;设备配置;带宽分配;管理客户程序和设备之间的控制流;管理... 阅读全文
posted @ 2012-04-19 08:44 我心狂野 阅读(917) 评论(0) 推荐(0) 编辑
摘要: C - v 下一屏 M - v 上一屏 C - f 往前一个字符 C - b 往后一个字符 C - p 上一行 C - n 下一行 M - f 往前一个词 M - b 往后一个词 C - a 行首 C - e 行尾 M - a 句首 M - e 句尾 M - > 文件末尾 M - < 文件开头 C - u 输入参数 如:C - u 8 C - f C - g 取消之前的命令 C - x 1 关掉... 阅读全文
posted @ 2012-04-18 22:04 我心狂野 阅读(484) 评论(0) 推荐(0) 编辑
摘要: Ps:话说以前竟然一直没有关注到这个问题啊。不应该啊。今天查了点资料,加上自己写code的体会,说下一下,作为记录吧。先概括一下:点操作符 “.”用来引用普通对象。箭头操作符“->”用来引用指针对象。举例子说明一下:比如,我有一个对象darkray。那么我可以通过”.”来调用darkray类中中的成员变量。但是如果darkray是指针的话,就不能通过”.”来调用,而只能使用”->”来调用了。放到C语言中不存在对象的概念的。点操作符用得到的地方,大多在结构,比如:struct darkray{float coder;int geek;};在程序中darkray fuckyou={2. 阅读全文
posted @ 2012-03-30 20:12 我心狂野 阅读(4013) 评论(0) 推荐(0) 编辑
摘要: YCbCr是DVD、摄像机、数字电视等消费类视频产品中,常用的色彩编码方案。YCbCr 有时会称为 YCC.。Y'CbCr 在模拟分量视频(analog component video)中也常被称为 YPbPr。YCbCr不是一种绝对色彩空间,是YUV压缩和偏移的版本。 YCbCr与YUV的区别 正如几何上用坐标空间来描述坐标集合, 色彩空间用数学方式来描述颜色集合。常见的3 个基本色彩模型是RG... 阅读全文
posted @ 2012-03-24 21:49 我心狂野 阅读(581) 评论(0) 推荐(0) 编辑
摘要: 一、和rgb之间换算公式的差异 yuv<—>rgb Y'= 0.299*R' + 0.587*G' + 0.114*B' U'= -0.147*R' - 0.289*G' + 0.436*B' = 0.492*(B'- Y') V'= 0.615*R' - 0.515*G' - 0.100*B' = 0.877*(R'- Y') R' = Y' + 1.140*V' G' = Y' - 0... 阅读全文
posted @ 2012-03-24 18:34 我心狂野 阅读(619) 评论(0) 推荐(0) 编辑
摘要: 前言:复杂类型说明 要了解指针,多多少少会出现一些比较复杂的类型,所以我先介绍 一下如何完全理解一个复杂类型,要理解复杂类型其实很简单,一 个类型里会出现很多运算符,他们也像普通的表达式一样,有优先 级,其优先级和运算优先级一样,所以我总结了一下其原则: 从变量名处起,根据运算符优先级结合,一步一步分析. 下面让我们先从简单的类型开始慢慢分析吧: int p; //这是一个普通的整型变量 int *p; //首先从P处开始,先与*结合,所以说明P是一 //个指针,然后再与int结合,说明指针所指向 //的内容的类型为int型.所以P是一个返回整 //型数据的指针 int p[3]; //首先从 阅读全文
posted @ 2012-03-22 11:10 我心狂野 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 88E1111可工作在10Mb/s,100Mb/s,1000Mb/s下,由于DE2-115开发板在设计的时候只采用了4位数据端口,因此只能采用MII模式(100Mb/s),或者RGMII模式(1000Mb/s),看了官方的DATASHEET后,几乎得到什么,于是就想到了一个办法,就是将官方所给的关于... 阅读全文
posted @ 2012-01-04 13:27 我心狂野 阅读(33222) 评论(4) 推荐(5) 编辑
摘要: 相对同时刚出校门同学从事其它行业而言优厚的薪水,以及不断学习更新的专业知识不仅仅让你感到生活的充实,更满足了你那不让外人知的虚荣心。在刚出校门的几年中,你经常回头看看被你落在后面的同学们,在内心怜悯他们的同时,你也会对自已天天加班的努力工作感到心里平衡:“有付出才会有回报”这句话在那几年中你说的最多,不管是对自已的朋友们还是自已的爱人。第二句最常说的话是对公司的领导:“不行我就走人!”,实际上你也... 阅读全文
posted @ 2011-12-27 22:29 我心狂野 阅读(1063) 评论(2) 推荐(3) 编辑
摘要: 归并排序 阅读全文
posted @ 2011-12-25 23:48 我心狂野 阅读(340) 评论(0) 推荐(0) 编辑
摘要: 1 /*算法导论:P15 插入排序 2 * 使用方法:vector vec, InsertSort(vec) 3 * 4 */ 5 #include 6 #include 7 using namespace std; 8 template 9 void InsertSort(vector &array)10 {11 //typename的作用是告诉c++编译器,typename后面的字符串为一个类型名称,而不是成员函数或者成员变量12 //定义两个Vector的迭代器13 typename vector::iterator iter_temp1,iter_temp2;... 阅读全文
posted @ 2011-12-23 11:00 我心狂野 阅读(450) 评论(0) 推荐(0) 编辑
摘要: 对于不同的时钟域要传递数据的话,需要采用一定的手段,来防止数据传递时产生亚稳态等问题 1、慢时钟域向快时钟域传递数据module low2fast(clk,reset,asyn_in,syn_out,);input clk,reset;input asyn_in;output syn_out;reg q1,q2;always@(posedge clk or posedge reset)if(res... 阅读全文
posted @ 2011-12-20 14:54 我心狂野 阅读(4572) 评论(0) 推荐(0) 编辑
摘要: 时钟是整个电路最重要、最特殊的信号,系统内大部分器件的动作都是在时钟的跳变沿上进行, 这就要求时钟信号时延差要非常小, 否则就可能造成时序逻辑状态出错;因而明确FPGA设计中决定系统时钟的因素,尽量较小时钟的延时对保证设计的稳定性有非常重要的意义。 1.1 建立时间与保持时间 建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold time)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。建立与保持时间的简单示意图如下.. 阅读全文
posted @ 2011-12-20 10:25 我心狂野 阅读(866) 评论(0) 推荐(0) 编辑
摘要: 芯片外部引脚很多都使用inout类型的,为的是节省管腿。一般信号线用做总线等双向数据传输的时候就要用到INOUT类型了。就是一个端口同时做输入和输出。 inout在具体实现上一般用三态门来实现。三态门的第三个状态就是高阻'Z'。当inout端口不输出时,将三态门置高阻。这样信号就不会因为两端同时输出而出错了,更详细的内容可以搜索一下三态门tri-state的资料.1 使用inout类型数据,可以用如下写法:inout data_inout;input data_in;reg data_reg;//data_inout的映象寄存器reg link_data;assign data 阅读全文
posted @ 2011-12-18 00:40 我心狂野 阅读(7279) 评论(0) 推荐(0) 编辑
摘要: 各厂商综合工具,对HDL综合时都定义了一些综合属性这些属性可指定a declaration,a module item,a statement, or a port connection 不同的综合方式。语法为:/* synthesis, <any_company_specific_attribute = value_or_optional_value */下面就是Altera的几个常用的Synthesis attributesNopruneA Verilog HDL synthesis attribute that prevents the Quartus II software fr 阅读全文
posted @ 2011-12-18 00:12 我心狂野 阅读(8095) 评论(0) 推荐(1) 编辑
摘要: (1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,not,bufif0,bufif1,notif0,notif1,if,inout,input,instantitation,module,negedge,posedge,operators,output,parameter。 (2)所有综合工具都不支持的结构:time,defparam,$finish,fork,join,initia 阅读全文
posted @ 2011-12-08 21:56 我心狂野 阅读(2552) 评论(0) 推荐(0) 编辑
摘要: 常用EMACS编辑命令C-f 向右移动一个字符C-b 向左移动一个字符M-f 向右移动一个词【对中文是移动到下一个标点符号】M-b 向左移动一个词【对中文是移动到上一个标点符号】C-n 移动到下一行C-p 移动到上一行C-a 移动到行首C-e 移动到行尾C-g 退出当前命令C-s 增量向前搜索C-/ 撤销C-. 重做C-, 复制当前单词C-k 删除光标至行末C-S-backspace 删除当前行C-Backspace 删除单词C-d 删除字符C-y 粘贴C-w 剪切M-w 复制C-x r k 删除矩形区块C-x r t ... 阅读全文
posted @ 2011-11-26 00:32 我心狂野 阅读(1165) 评论(1) 推荐(0) 编辑
摘要: 关联容器 关联容器支持通过键来高效地查找和读取元素。两个基本的关联容器类型是map和set。map的元素以键-值对的形式组织:键用作元素在map的索引,而值则表示所存储和读取的数据。set仅包含一个键,并有效地支持关于某个键是否存在的查询。set和map类型的对象不允许为同一个键添加第二个元素。如果一个键必须对应多个实例,则需使用multimap或mutiset类型,这两种类型允许多个元素拥有相同的键。pair类型:在头文件utility中定义。pair的创建和使用:#includepair author("Peter",30);cout Student;Student s 阅读全文
posted @ 2011-11-24 11:58 我心狂野 阅读(339) 评论(0) 推荐(0) 编辑
摘要: 顺序容器,它将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。标准库里定义了三种类型:vector(支持快速随机访问)、list(支持快速插入、删除)、deque(双端队列)容器只定义了少量操作,大多数额外的操作由算法库提供。容器内元素的类型约束;1、元素类型必须支持赋值运算;2、元素类型的对象必须可以复制。这是容器元素类型的最低要求,如果想支持一些其他特殊要求,则必须具备相关的性质。可以定义容器的容器vector > lines;//必须使用"> >"中间的空格,否则会出现变异错误迭代器运算:关系操作符只适用于vector 阅读全文
posted @ 2011-11-22 15:03 我心狂野 阅读(402) 评论(0) 推荐(0) 编辑
摘要: Altera器件有EPCS系列配置器件,其实,这些配置器件就是我们平时通用的SPIFlash,据AlteraFAE描述:“EPCS器件也是选用某家公司的SPIFlash,只是中间经过Altera公司的严格测试,所以稳定性及耐用性都超过通用的SPIFlash”。就本人看来,半导体的稳定性问题绝大部分都是由本身设计缺陷造成的,而成熟的制造工艺不会造成产品的不稳定;并且,现在Altera的器件在读入配置数据发生错误时,可以重新读取SPIFlash里面的数据,所以在工艺的稳定性以及设计的可靠性双重保证下,通过选用通用的SPIFlash来减少产品的成本压力。 假设我们正在使用一个普通SPIFlash,. 阅读全文
posted @ 2011-11-22 14:47 我心狂野 阅读(2537) 评论(0) 推荐(1) 编辑
摘要: Pacman 是一个命令行工具,这意味着当你执行下面的命令时,必须在终端或控制台中进行。1、更新系统在 Arch Linux 中,使用一条命令即可对整个系统进行更新:pacman -Syu如果你已经使用pacman -Sy将本地的包数据库与远程的仓库进行了同步,也可以只执行:pacman -Su2、安装包pacman -S 包名例如,执行pacman -S firefox将安装 Firefox。你也可以同时安装多个包,只需以空格分隔包名即可。pacman -Sy 包名与上面命令不同的是,该命令将在同步包数据库后再执行安装。pacman -Sv 包名在显示一些操作信息后执行安装。pacman - 阅读全文
posted @ 2011-11-19 13:29 我心狂野 阅读(28431) 评论(1) 推荐(5) 编辑
摘要: 偏移量决定写入的数据对应何种(目的/所起作用)IO操作函数函数原型:IORD(BASE, REGNUM)输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量函数说明:从基地址为BASE的设备中读取寄存器中偏移量为REGNUM的单元里面的值。寄存器的值在地址总线的范围之内。返回值: -函数原型:IOWR(BASE, REGNUM, DATA)输入参数:BASE为寄存器的基地址,REGNUM为寄存器的偏移量,DATA为要写入的数据函数说明:往偏移量为REGNUM寄存器中写入数据。寄存器的值在地址总线的范围之内。返回值: -函数原型:IORD_32DIRECT(BASE, OFFSET) 阅读全文
posted @ 2011-10-11 16:28 我心狂野 阅读(4463) 评论(0) 推荐(1) 编辑