• 本帖为转贴,在网上广为流传,很有见地。

      为初学者服务。这是我的帖子的宗旨。我也是个初学者(强调了无数遍了) ,我以我的理解把初学者觉得难懂的东西用浅显的语言写出来。由于小学时语文 没学好,所以竭尽全力也未必能达到这个目的。尽力而为吧。
    指针是c和c++中的难点和重点。我只精通dos下的basic。c语言的其它各种特 性,在basic中都有类似的东西。只有指针,是baisc所不具备的。指针是c的灵魂 。
    我不想重复大多数书上说得很清楚的东西,我只是把我看过的书中说得不清 楚或没有说,而我又觉得我理解得有点道理的东西写出来。我的目的是:
    1。通过写这些东西,把我脑袋中关于c的模糊的知识清晰化。
    2。给初学者们一点提示

  • 今天着重看了一下Uart中接收程序,学到了一些东西
  • FPGA的开发经验学习~

    2006年04月17日

    系统中需要使用多时钟时,经常会遇到时钟域之间的数据传递的同步问题,这里有多时钟系统设计的一些方法.

  • 异步FIFO结构及FPGA设计

     

    介绍异步FIFO的概念、应用及其结构,然后分析实现异步FIFO的难点问题及其解决办法;在传统设计的基础上提出一种新颖的电路结构并对其进行综合仿真和FPGA实现。


  • 二进制格雷码与自然二进制码的互换


      在精确定位控制系统中,为了提高控制精度,准确测量控制对象的位置是十分重要的。目前,检测位置的办法有两种:其一是使用位置传感器,测量到的位移量由变送器经A/D转换成数字量送至系统进行进一步处理。此方法精度高,但在多路、长距离位置监控系统中,由于其成本昂贵,安装困难,因此并不实用;其二是采用光电轴角编码器进行精确位置控制。光电轴角编码器根据其刻度方法及信号输出形式,可分为增量式、绝对式以及混合式三种。而绝对式编码器是直接输出数字量的传感器,它是利用自然二进制或循环二进制(格雷码)方式进行光电转换的,编码的设计一般是采用自然二进制码、循环二进制码、二进制补码等。特点是不要计数器,在转轴的任意位置都可读出一个固定的与位置相对应的数字码;抗干扰能力强,没用累积误差;电源切断后位置信息不会丢失,但分辨率是由二进制的位数决定的,根据不同的精度要求,可以选择不同的分辨率即位数。目前有10位、11位、12位、13位、14位或更高位等多种。
      其中采用循环二进制编码的绝对式编码器,其输出信号是一种数字排序,不是权重码,每一位没有确定的大小,不能直接进行比较大小和算术运算,也不能直接转换成其他信号,要经过一次码变换,变成自然二进制码,在由上位机读取以实现相应的控制。而在码制变换中有不同的处理方式,本文着重介绍二进制格雷码与自然二进制码的互换。

  •  

     

    进制转换
  • VERILOG学习

    2006年03月13日

    Tag:verilog

    http://www.asic-world.com/verilog/veritut.html

    不错的英文教材.大家可以看看哈

  • testbench文件编写风格

    2006年03月13日

    Tag:verilog
    testbench文件编写风格
     
    作者: xixilu  发布日期: 2006-1-06   出自: http://www.edacn.net
     
  • verilog代码编写规范

    2006年03月13日

    Tag:verilog
    Verilog代码编写规范
    Verilog代码编写规范

    一. 强调Verilog代码编写风格的必要性。
    二. 强调编写规范的宗旨。

    三. 变量及信号命名规范。

    四. 编码格式规范。
  • verilog学习之 FORK JOIN语句

    2006年03月13日

    Tag:verilog

    发现了一个不错的VERILOG学习网站,以后可以经常去看一下

    http://www.fpgatech.net/onlineresource/systemverilog31a/systemverilog31a.html?frmname=topic&frmfile=00603.html

    fork...join能够从它的每一个并行语句中产生并发进程。 

     

    fork...join块的声明语法如下:

    par_block ::=          // 引用自附录A.6.3
        fork [: block_identifier] {block_item_declaration} {statement_or_null}
        join_keyword [: block_identifier]
    
    join_keyword ::= join | join_any | join_none

    语法 9-1—Fork...join块语法(摘录自附录A)

     

    fork...join块可以指定一条或多条语句,每一条语句都应该作为并发进程执行。Verilog fork...join块总是引起执行fork语句的进程阻塞直到所有分支进程中止。通过加入join_anyjoin_none关键字,SystemVerilog提供了三种选择来指定父进程何时恢复执行。 

     

    表 9-1: fork...join控制选项

    选项 
    描述 
    join 
    父进程会阻塞直到这个分支产生的所有进程结束。 
    join_any 
    父进程会阻塞直到这个分支产生的任意一个进程结束。 
    join_none 
    父进程会继续与这个分支产生的所有进程并发执行。在父线程执行一条阻塞语句之前,产生的进程不会启动执行。 

     

    在定义一个fork...join块的时候,将整个分叉封装在一个begin...end块中会引起整个块作为单个进程执行,其中每条语句顺序地执行。

    fork
        begin
            statement1; // 一个带有2条语句的进程
            statement2;
        end
    join

    在下面的例子中,包含两个进程分支,第一个等待20ns,第二个等待命名事件eventA被触发。因为指定了join关键字,父进程应该阻塞直到这两个进程结束;也就是说,直到过了20ns并且eventA被触发。

    fork
        begin
            $display("First Block\n");
            #20ns;
        end
        begin
            $display("Second Block\n");
            @eventA;
        end
    join

    在一个fork...join语句的关联文中使用return语句是非法的,并且会导致一个编译错误。例如:

    task wait_20;
        fork
            #20;
            return; // 非法的:不能返回;任务位于另外一个进程中
        join_none
    endtask

    只要fork...join块作用范围内声明的自动变量进入它们的作用范围,在产生任何进程之前,这些自动变量应该被初始化成它们的初始值。这些变量对于循环结构产生的进程存储唯一的、每次都交互的数据非常有用。例如:

    initial
        for(int j = 1; j <= 3; ++j)
            fork
                automatic int k = j;     // 对每一个j值的本地拷贝
                #k $write("%0d", k);
                begin
                    automatic int m = j; // m的值是不确定的
                    ...
                end
            join_none

    上面的例子的输出为:123。

  • 今天看到一个帖子,不错.

    是介绍欧洲四大艺术风格的,罗马,哥特,文艺复兴和巴洛克.还是比较感兴趣,就贴过来了.好好看一下,学习点新鲜知识.

    http://pop.pcpop.com/default.aspx?MainUrl=http://pop.pcpop.com/060303/2050262.html

  • 庆祝搬家~~~~

    2006年03月07日

    Tag:

    在学校的论坛上看到了www.blogbus.com的网址,也想申请个自己的BLOG玩玩.所以就在这里找到了.呵呵,感觉还不错,界面很清新.就是空间小了点,只有2M的样子.

    以后就经常过来看看拉~~~