发 帖  
原厂入驻New
[资料]

【连载】阿东团队原创视频之 Verilog和Qsys设计

2014-7-23 22:19:48  10982
分享
本帖最后由 100dongdong 于 2014-8-14 13:31 编辑

【目的】 阿东推出《阿东团队原创视频之 Verilog和Qsys设计》 连载,为了帮助初学者深入掌握FPGA和Verilog设计,Qsys设计。

【目标】FPGA初学者,Verilog爱好者,Qsys爱好者。

【主题】分为两大主题: Verilog设计 & Qsys设计。

阿东的经验分享:
https://bbs.elecfans.com/jishu_440949_1_1.html

【Verilog篇】

【Verilog基础和编程规范视频公开课】第一期 https://bbs.elecfans.com/jishu_390144_1_1.html

【Verilog基础和编程规范视频公开课】第二期 https://bbs.elecfans.com/jishu_397388_1_1.html

【Verilog基础和编程规范视频公开课】第三期 https://bbs.elecfans.com/jishu_408322_1_1.html

【恒创科技原创视频1 Quartus 11.0安装与破解_32位http://pan.baidu.com/s/1pJsfF8v

【恒创科技原创视频2 Quartus 11.0安装与破解_64位:http://pan.baidu.com/s/1jcGJO

【恒创科技原创视频3 Quartus的简单使用:http://pan.baidu.com/s/1dDu1Tzb

【恒创科技原创视频4 SignalTap的简单使用:http://pan.baidu.com/s/1nt2tgMH

【恒创科技原创视频5modelsim安装与破解教程:http://pan.baidu.com/s/1gd3Rs4r

【恒创科技原创视频6modelsim的简单使用:http://pan.baidu.com/s/1kTkMrbD

【恒创科技原创视频7基本门电路http://pan.baidu.com/s/1gdCELDT

【恒创科技原创视频8组合逻辑篇:http://pan.baidu.com/s/1hqtFQWO

【恒创科技原创视频9时序逻辑篇:http://pan.baidu.com/s/1gduxSgr

【恒创科技原创视频10计数器http://pan.baidu.com/s/1jGiM3au

【恒创科技原创视频11沿检电路篇:http://pan.baidu.com/s/1qWlsaXu

【恒创科技原创视频12按键控制LEDhttp://pan.baidu.com/s/1hq1hyvE

【恒创科技原创视频13按键控制蜂鸣器http://pan.baidu.com/s/1i3Jwqpv

【恒创科技原创视频14流水灯实验:http://pan.baidu.com/s/1tmfL0

【恒创科技原创视频15数码管静态显示:http://pan.baidu.com/s/1jG3LiSI

【恒创科技原创视频16】数码管动态显示:http://pan.baidu.com/s/1c03rzLQ

【恒创科技原创视频17】 状态机:http://pan.baidu.com/s/1gd7Vfer

【恒创科技原创视频18】 1602显示字符:http://pan.baidu.com/s/1mgBiIrI

【恒创科技原创视频1912864显示字符:http://pan.baidu.com/s/1o62Xe6u

【恒创科技原创视频20】串口通信(发送):http://pan.baidu.com/s/1eQBuVZ0

【恒创科技原创视频21】串口通信(接收):http://pan.baidu.com/s/1qWpvQDu

【恒创科技原创视频22PS2键盘:http://pan.baidu.com/s/1mgunICo

【恒创科技原创视频23 串行flash  ID读取:http://pan.baidu.com/s/1qWFevd6

【恒创科技原创视频24 485通信:http://pan.baidu.com/s/1kTqmfhP

【恒创科技原创视频25 步进电机,直流电机:http://pan.baidu.com/s/1o6K8i4U

【恒创科技原创视频26】PWM: http://pan.baidu.com/s/1bnrixmZ

【恒创科技原创视频27】同步FIFO: http://pan.baidu.com/s/1gd8Blx5

【恒创科技原创视频28】异步FIFO:http://pan.baidu.com/s/1bnfDgNd

【恒创科技原创视频29】 红外遥控http://pan.baidu.com/s/1gdqurw3

【恒创科技原创视频30】LM75:http://pan.baidu.com/s/1kTieBT9

【恒创科技原创视频31】 DS1302数码管显示时间:http://pan.baidu.com/s/1qW4po5Y

【恒创科技原创视频32】 VGA显示彩条:http://pan.baidu.com/s/1vouVO

【恒创科技原创视频33】 VGA显示移动块:http://pan.baidu.com/s/1c0ncLiC

【恒创科技原创视频34】 DDS输出频率可调锯齿波:http://pan.baidu.com/s/1jGqoyJc

【恒创科技原创视频35】基于AD9851扫频仪:http://pan.baidu.com/s/1hqABsSc

【恒创科技原创视频36】矩阵键盘扫描:http://pan.baidu.com/s/1eQkWWqY

【恒创科技原创视频37】调度器_FR:http://pan.baidu.com/s/1o2S70

【恒创科技原创视频38】调度器_RR:http://pan.baidu.com/s/1eQ27RNW

【恒创科技原创视频39】调度器_WFQ:http://pan.baidu.com/s/1qWyjKuC

持续更新中......

【Qsys设计篇】
  
  【视频教程_实验1】新建一个Qsys系统: http://pan.baidu.com/s/1c0zTCoo

  【视频教程_实验2】Qsys_流水灯系统:http://pan.baidu.com/s/1gdimACr

  【视频教程_实验3】Qsys_按键系统:http://pan.baidu.com/s/1dDCIQ0D

  【视频教程_实验4】Qsys_中断系统:http://pan.baidu.com/s/1iwKAq

  【视频教程_实验5】Qsys_timer系统:http://pan.baidu.com/s/1qWPTADe

  【视频教程_实验6】Qsys_UART系统:http://pan.baidu.com/s/1mghw1DY

  【视频教程_实验7】Qsys_SDRAM系统:http://pan.baidu.com/s/1hqiQ5JA

  【视频教程_实验8】Qsys_UCosII系统:http://pan.baidu.com/s/1dDnGulV  

【说明】1、上述视频都是基于阿东原创的altera EP4CE6开发板  https://bbs.elecfans.com/jishu_348985_1_1.html 中的第一个板子。
2、本链接为原创视频篇,我们还有一个原创文档篇连载https://bbs.elecfans.com/jishu_410143_1_1.html ,欢迎大家观看,讨论。

















12
· 2014-7-24 10:10:55
--使用max plus II,选择了EPM7128SLC84-6,我的MAXPLUS里没有EPM7128SLC84-10可以选择。
LIBRARY ieee;
USE ieee.std_logic_1164.all;

ENTITY nand2 IS

        PORT
        (
                a        : IN        STD_LOGIC;
                b        : IN        STD_LOGIC;
                y        : OUT         STD_LOGIC
        );
        
END nand2;

ARCHITECTURE nand2_1 OF nand2 IS

        
BEGIN

y <=a nand b;

        
END nand2_1;

错误信息提示,说是第四行错误,TDF语法错误。我跟书上一致的代码。请求帮助
· 2014-7-24 10:16:34

本人正在FPGA入门道路上裸奔的小白一枚,写了一段流水灯代码,四种流动模式,其中一种是来回流动的那种,但是总是出现这两行警告,接上LED灯之后输出还不对
Warning (10240): Verilog HDL Always Construct warning at runhorse_led_4_2.v(95): inferring latch(es) for variable "loop_bit_A", which holds its previous value in one or more paths through the always construct
Warning (10240): Verilog HDL Always Construct warning at runhorse_led_4_2.v(95): inferring latch(es) for variable "counter_A", which holds its previous value in one or more paths through the always construct

下面是出问题的那段代码,求大大们指教啊,我已经快要被逼疯了
        always @ (posedge clk_led_in or negedge rst)
                begin
                case (SW_AB_led)
                        model0:
                                begin
                                decoder_2_4 (counter_A, led_data_r);
                                if (!rst)
                                        begin
                                        loop_bit_A = 1'b0;
                                        counter_A = 2'b0;
                                        end
                                else if (loop_bit_A)
                                                begin
                                                counter_A = counter_A + 1'b1;
                                                if (counter_A==2'b11)
                                                        loop_bit_A = 1'b0;
                                                end
                                        else
                                                begin
                                                counter_A = counter_A - 1'b1;
                                                if (counter_A==2'b0)
                                                        loop_bit_A = 1'b0;
                                                end
                                end
我在外面定义了一个2-4译码器的任务,就是“decoder_2_4 (counter_A, led_data_r);”那行,我的想法是只要counter_A在2’b0到2‘b11之间来回跑就行了,但是~~~~~~~
· 2014-7-24 10:17:50
最近在写这个接口驱动,有如下问题,求大神帮个忙:
1.对于一个显示器硬件而言,它怎么知道某个时间段是消隐的,某个时间段是有效显示的?
2.这种驱动,怎么放在不同分辨率、刷新频率的显示器上显示?
3.我写的一个800*600@72Hz 的驱动,为什么能在1440*900@60Hz的显示器上正确显示出来(我想要显示的图形是正确的)??
· 2014-7-24 10:20:07
想买一块便宜点的fpga的学习版,大神能不能推荐一块呢?谢谢
· 2014-7-24 21:41:54
哼小曲 发表于 2014-7-24 10:20
想买一块便宜点的fpga的学习版,大神能不能推荐一块呢?谢谢

  https://bbs.elecfans.com/jishu_348985_1_1.html 中的第一个板子,原创8本教材,硬件配置也丰富的,阿东团队提供技术支持的,才158元(包括USB下载器的),推荐购买!
· 2014-7-24 21:46:18
爱吃果冻 发表于 2014-7-24 10:10
--使用max plus II,选择了EPM7128SLC84-6,我的MAXPLUS里没有EPM7128SLC84-10可以选择。
LIBRARY ieee;
US ...

不清楚VHDL的语法错误,QUARTUS都升级到14.0了, 还在用MAX PLUS和VHDL,早点换过来吧,大家都在使用QUARTUS和Verilog的!
· 2014-7-24 21:49:42
gvxiaot 发表于 2014-7-24 10:16
本人正在FPGA入门道路上裸奔的小白一枚,写了一段流水灯代码,四种流动模式,其中一种是来回流动的那种, ...

例化不能放在awasys里面,rst不要放在case里面,另外你的代码很多语法问题,建议还是好好看下我们的语法教程,然后再写吧。
· 2014-7-24 21:51:39
klysa 发表于 2014-7-24 10:17
最近在写这个接口驱动,有如下问题,求大神帮个忙:
1.对于一个显示器硬件而言,它怎么知道某个时间段是消 ...

VGA不是有标准的时序图吗,显示器也是根据这个做判断的,另外为什么不能在搞分辨率上显示出来呢?
· 2014-7-25 10:48:44
最近按照特权同学很早的文章程序写了一个,可是用示波器感觉输出 CS,RD,WR都没有变化。将AD0804数据输出口直接接流水灯,流水灯也没有变化。
module AD(clk,rst_n,cs_n,rd_n,wr_n,LED_Out);

       input clk;
       input rst_n;
//       input intr_n;  
       output cs_n,rd_n,wr_n;
       output [1:0]LED_Out;

/***********************************************/     
       reg[1:0] idle,start,start_wait,convert,current_state,next_state;
       reg[15:0] delay;
       reg cs_n,rd_n,wr_n;
     //  reg[7:0] data_reg;
     //  reg read_flag;

       always @ (posedge clk or negedge rst_n) begin
              if(!rst_n)
                     begin
                     current_state <= 0;     
                     delay <= 0;
             //        data_reg  <= 0;
                     end
              else begin
                     case(current_state)
                            idle: begin
                                          if(delay<10)
                                                 begin delay <= delay+16'd1; end
                                          else begin
                                                 current_state <= next_state;
                                                 delay <= 0; end
                                          end
                            start:  begin
                                                 current_state <= next_state;
                                          end
                            start_wait: begin
                                                 current_state <= next_state;
                                          end
                            convert:  begin
                                          if(delay<2) begin
                                                 delay <= delay+16'd1; end
                                          else begin
                                             //    data_reg <= data;
                                                 current_state <= next_state;
                                                 delay <= 0; end
                                          end
                            default: ;
                            endcase
                     end
       end
      
     //  always @ (current_state or intr_n or rst_n) begin
     always @ (current_state or  rst_n) begin
              if(!rst_n) begin
                   idle <= 0;
                    start <= 1;
                    start_wait <= 2;
                    convert <= 3;      
        //             read_flag <= 0;
                    end
              else begin
                     case (current_state)
                            idle: begin
                                   cs_n <= 1;
                                   wr_n <= 1;
                                   rd_n <= 1;
                              //     read_flag <= 0;
                                   next_state <= start; end
                            start: begin
                                   cs_n <= 0;
                                   wr_n <= 0;
                                   rd_n <= 1;
                               //    read_flag <= 0;
                                   next_state <= start_wait; end
                            start_wait: begin
                                   wr_n <= 1;
                                   cs_n <= 1;
                                   rd_n <= 1;
                              //     read_flag <= 0;
                             //      if(!intr_n)       next_state <= convert;
                              //     else
                                   next_state <= start_wait;
                                   end
                            convert: begin
                                   cs_n <= 0;
                                   rd_n <= 0;
                                   wr_n <= 1;
                              //     read_flag <= 1;
                                   next_state <= idle; end
                            default: next_state <= idle;
                            endcase
                     end
       end
             /************************************** */   
   
         wire LED0_Out;
         
         led0_module U3
         (
             .clk( clk ),
                  .rst_n( rst_n ),
                  .LED_Out( LED0_Out )
         );
        
         /*********************************/
         
         wire LED1_Out;
         
         led1_module U4
         (
             .clk( clk ),
                  .rst_n( rst_n ),
                  .LED_Out( LED1_Out )
         );
         
         /*********************************/
         
    assign LED_Out = { LED0_Out, LED1_Out};
   
endmodule
· 2014-7-25 10:50:36

程序如下:是一个加法器
input [3:0] ain;
input [3:0] bin;
input                cin;
output                 count;
output        [3:0]        sum;

assign {count,sum} = cin + ain + bin;

仿真想要ain从1-8,bin也从1-8共64中组合,for语句程序如下
initial begin        ain = 0;        bin = 0;        cin = 0;end
always        #5 cin = ~cin;
initial begin        for(i=1;i<8;i=i+1)                 for(j=1;j<8;j=j+1)                        #10 bin = j;                                ain = i;        end
initial begin        $monitor($time,,, "%d + %d + %d={%d,%d}",ain,bin,cin,count,sum);        #1000 $stop;end
Modelsim仿真打印结果: 0   0 +  0 + 0={0, 0}#                    5   0 +  0 + 1={0, 1}#                   10   0 +  1 + 0={0, 1}#                   15   0 +  1 + 1={0, 2}#                   20   0 +  2 + 0={0, 2}#                   25   0 +  2 + 1={0, 3}#                   30   0 +  3 + 0={0, 3}#                   35   0 +  3 + 1={0, 4}#                   40   0 +  4 + 0={0, 4}#                   45   0 +  4 + 1={0, 5}#                   50   0 +  5 + 0={0, 5}#                   55   0 +  5 + 1={0, 6}#                   60   0 +  6 + 0={0, 6}#                   65   0 +  6 + 1={0, 7}#                   70   0 +  7 + 0={0, 7}#                   75   0 +  7 + 1={0, 8}#                   80   0 +  1 + 0={0, 1}#                   85   0 +  1 + 1={0, 2}#                   90   0 +  2 + 0={0, 2}#                   95   0 +  2 + 1={0, 3}
460   0 +  4 + 0={0, 4}#                  465   0 +  4 + 1={0, 5}#                  470   0 +  5 + 0={0, 5}#                  475   0 +  5 + 1={0, 6}#                  480   0 +  6 + 0={0, 6}#                  485   0 +  6 + 1={0, 7}#                  490   8 +  7 + 0={0,15}#                  495   8 +  7 + 1={1, 0}#                  500   8 +  7 + 0={0,15}#                  505   8 +  7 + 1={1, 0}#                  510   8 +  7 + 0={0,15}#                  515   8 +  7 + 1={1, 0}#                  520   8 +  7 + 0={0,15}#                  525   8 +  7 + 1={1, 0}
960   8 +  7 + 0={0,15}#                  965   8 +  7 + 1={1, 0}#                  970   8 +  7 + 0={0,15}#                  975   8 +  7 + 1={1, 0}#                  980   8 +  7 + 0={0,15}#                  985   8 +  7 + 1={1, 0}#                  990   8 +  7 + 0={0,15}#                  995   8 +  7 + 1={1, 0}
结果明显不是我想要的,如何才能让ain,bin分别从1-8一共有64种组合呢?
· 2014-7-25 10:51:59
您好  我最近在纠结怎样用VHDL编写NRF24L01无线收发,只要告诉大概的就好了,是怎么设置发送地址/接收的,怎么初始化的?谢谢指导。
· 2014-7-25 10:53:44
阿东前辈您好  我是应届毕业生,在一小公司入职不久,也是刚开始学FPGA不久的菜鸟。小公司带是有个人带,但完全没培训,给本书看,然后要你做哪些。感觉FPGA好难学啊,真怕学不出来。(现在的公司是用FPGA来做通信方面的)
       对C语言熟悉,但VHDL又和C语言半毛钱关系没有。
       现在都不知道是否要继续下去了,现在的困惑是要不要继续下去呢 。
      现在想是应该重新去找个用得着C语言的和硬件又有关联的(比如嵌入式)的工作呢,还是把这FPGA继续学下去?
       搞FPGA有前途吗?
       望前辈能给点建议
· 2014-7-25 10:55:29
前辈你好 我想问一下,在使用PLL中,输出的Locked管脚是什么,具体有什么作用,能不能作为整个系统的复位信号?
· 2014-8-3 23:04:01
笔画张 发表于 2014-7-25 10:55
前辈你好 我想问一下,在使用PLL中,输出的Locked管脚是什么,具体有什么作用,能不能作为整个系统的复位信 ...

锁定信号哈,代表输出时钟稳定了,复位需要在这个稳定之后进行。
· 2014-8-3 23:05:13
rosa 发表于 2014-7-25 10:53
阿东前辈您好  我是应届毕业生,在一小公司入职不久,也是刚开始学FPGA不久的菜鸟。小公司带是有个人带, ...

建议你好好学下去,实在不行报个培训班学习下吧,坚持住哈!!
· 2014-8-27 15:36:37
这个连载太强大了,非常喜欢。
· 2014-8-28 22:55:53
    顶起     
· 2014-9-4 08:28:10
赞一个,挺不错的
· 2014-9-9 16:47:49
nice,好强大的说

评论

高级模式
您需要登录后才可以回帖 登录 | 注册

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
12下一页
发资料
关闭

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

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