集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: fpgaw

至芯科技【夏宇闻教授专栏】与你一起搞定FPGA设计!

[复制链接]
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-11-6 06:23:13 | 显示全部楼层
回复  夏宇闻


    是不是上g赫兹的电路设计 fpga就无能为力了?
jahero 发表于 2011-11-4 15:03

要看器件的类型和型号。有的FPGA可以直接接收频率上G的LVDS串行信号流,进入FPGA内部后转换成几百MHZ的并行数据,然后做各种处理。
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-11-6 06:41:19 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-11-6 07:35 编辑
FPGA I/O引脚分配
我现在想做一个开发板 用EP3C120F780,引脚数太多,如何分配引脚才能使走线好,画PCB好画 ...
TCL 发表于 2011-11-5 06:34

您可以先让布局布线工具自动布线。把与SDRAM连结的有关信号用明确一致的信号名标记,做一些约束,然后自动编译、综合、优化、布局布线、最后看引脚是如何自动分配的,是否符合约束条件。然后参考看到的引脚逐一确定,编写引脚文件。然后再做一次fitting,如果静态时序分析和布局布线后的时序仿真没有问题就可基本搞定。如果读写频率比较临界,画线路板时一定要注意SDRAM与FPGA的距离和引线长度的一致性。即信号完整性仿真必不可少,否则有可能出差错。
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-11-6 06:47:00 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-11-6 06:48 编辑
夏老师您好!
这个学期我选了数字系统设计这门课,老师最近布置了这样一个题目,我实在看不懂,请教一下您 ...
jiezhouliping 发表于 2011-11-5 12:20

我觉得您的老师布置的作业十分具体。为什么您看不懂呢?是不是上课没有认真听课?还是老师没有把基础知识讲透?其他同学能理解题目吗?
jahero 发表于 2011-11-7 00:12:17 | 显示全部楼层
老师我正在看您书上risc cpu那章 我如果想从 cputop文件里 调用machine的state 是不是我应在cputop文件里写 t_cpu.m-machine.state呢?
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-11-7 06:40:22 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-11-7 06:52 编辑
老师我正在看您书上risc cpu那章 我如果想从 cputop文件里 调用machine的state 是不是我应在cputop文件里写 ...
jahero 发表于 2011-11-7 00:12

层次变量的命名规则,在我编写的书中应该有介绍。针对您提出的具体情况:在cputop中实例引用cpu时实例名用t_cpu,而machine是t_cpu中的一个模块,它的实例名为m_machine,故其state的层次名应该为:t_cpu.m_machine.state , 你的回答很正确。您是否没注意把m和machine之间的下杠符写成减号了?才出现这个问题的?
dong5103 发表于 2011-11-7 16:49:03 | 显示全部楼层
夏老师:
       请教一个问题,代码如下:
module inint
(
    clk,rst,
    outdate,
    rs,en,rw
    );
    input clk;
    input rst;

    output[7:0] outdate;
    reg rs;
    reg en;
    reg rw;
////////
    reg[2:0] i;
    reg[7:0] Ldate;
    always @(negedge clk or negedge rst)
        if(!rst)
            begin
                Ldate<=8'bz;
                i<=3'b0;
            end
         else
             case (i)
                 3'd0:
                   begin
                        com u1     
                       (
                        .clk(clk),
                        .rst(rst),
                        .indate(8'h38),
                        .rs(rs),
                        .en(en),
                        .rw(rw),
                        .outdate(Ldate)
                        );
                        i<=i+1'b1;
                   end
                   3'd1:
                   begin
                        com u2   
                       (
                           .clk(clk),.rst(rst),
                           .indate(8'h08),
                           .rs(rs),.en(en),.rw(rw),
                           .outdate(Ldate)
                        );
                          i<=i+1'b1;
                   end
                   3'd2:
                   begin
                        com u3                    ///指令01;     显示清屏
                       (
                           .clk(clk),.rst(rst),
                           .indate(8'h01),
                           .rs(rs),.en(en),.rw(rw),
                           .outdate(Ldate)
                        );
                          i<=i+1'b1;
                   end
                    3'd3:
                   begin
                        com u4                    ///指令06;     //显示光标移动设置
                       (.clk(clk),
                        .rst(rst),
                        .indate(8'h06),
                        .rs(rs),
                        .en(en),
                        .rw(rw),
                        .outdate(Ldate)
                        );
                          i<=i+1'b1;
                   end
                    3'd4:
                   begin
                        com u5                    ///指令0c;     //显示开及光标设置
                       (.clk(clk),
                        .rst(rst),
                        .indate(8'h0c),
                        .rs(rs),
                        .en(en),
                        .rw(rw),
                        .outdate(Ldate)
                        );
                          i<=i+1'b1;
                   end
                   3'd5:
                    begin
                        i<=1'b0;

                    end
             endcase
/////////////////////////////////
             assign outdate=Ldate;


endmodule
其中的类似,
3'd1:
                   begin
                        com u2   
                       (
                           .clk(clk),.rst(rst),
                           .indate(8'h08),
                           .rs(rs),.en(en),.rw(rw),
                           .outdate(Ldate)
                        );
这样的用法是不是不对啊??
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-11-7 19:02:40 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-11-7 20:10 编辑
夏老师:
       请教一个问题,代码如下:
module inint
(
    clk,rst,
    outdate,
    rs,en,rw
...
dong5103 发表于 2011-11-7 16:49

确实不对。您应该认真读一遍语法书,注意书上每一句话,认真思考,就不至于犯如此低级的错误。你必须做不少改动,把5个实例引用独立出来,写在状态机的外面。状态机中只需要在不同状态对这几个由同一模块(com)生成的不同的实例(u1,u2,...u5)的使能端口信号分别置1,不用时把使能输入置0即可。另外还要写一个测试模块,走一遍仿真,看是否与设想的动作一致。
dong5103 发表于 2011-11-8 10:50:35 | 显示全部楼层
回复 157# 夏宇闻
谢谢夏老师啦,我再仔细看看书~~
yhf561 发表于 2011-11-10 21:30:06 | 显示全部楼层
夏老师好啊,我是新手,请教您一个问题啊。关于仿真的,我按照你的那本《Verilog数字系统设计教程》第七讲上例7.1做的。
我用的是quartus II 9.1,编写的程序,模块源代码和测试源代码这两个文件放到两个.v文件里是吧?是在同一个工程目录下的么?怎么我仿真不对啊,“Error (10228): Verilog HDL error at seqdet.v(1): module "seqdet" cannot be declared more than once”,
Error (10112): Ignored design unit "t" at t.v(3) due to previous errors那该怎么生成仿真后的时序图咧?必须安装modelsim吗
之前我做的一些小程序,直接在模块源代码里,在Verilog Waveform File里做的波形仿真,么有用过测试源代码做过,怎么做啊?谢谢!!!
yhf561 发表于 2011-11-10 21:32:51 | 显示全部楼层
再请问下哦,有没有在线请教呀?
谢谢!
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|集成电路技术分享 ( 京ICP备20003123号-1 )

GMT+8, 2024-7-5 04:21 , Processed in 0.081317 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表