集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
楼主: fpgaw

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

[复制链接]
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-10-25 21:42:58 | 显示全部楼层
夏老师您好,请问下Quartus II 有没有给设计自动分配引脚的功能,如果有,怎么使用呀?
418478935 发表于 2011-10-25 17:31

您不做任何配置,可综合的顶层模块的输入和输出端口综合和布局布线后,将自动连接到引脚。
418478935 发表于 2011-10-26 14:16:05 | 显示全部楼层
您不做任何配置,可综合的顶层模块的输入和输出端口综合和布局布线后,将自动连接到引脚。
夏宇闻 发表于 2011-10-25 21:42



    夏老师好,我比较愚钝,比如我写个简答的加法器,两个4位的输入,一个时钟,一个5位的输出。别的什么都不设置,直接编译,编译成功后,打开 pin-planner 看,里面的所有引脚都是空白的呀。
而且会有一个Critial Waring : Critical Warning: No exact pin location assignment(s) for 14 pins of 14 total pins。这种情况下是不是没有分配引脚呢?

再次打扰老师,实在不好意思。
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-10-26 16:55:01 | 显示全部楼层
夏老师好,我比较愚钝,比如我写个简答的加法器,两个4位的输入,一个时钟,一个5位的输出。别的 ...
418478935 发表于 2011-10-26 14:16



    但是如果您按下Show Fitter pIacement您能看到布线工具为您随意分配的引脚,当然位置不会令您满意,也不能算是真的连接,但可供您确定正式引脚提供参考。
418478935 发表于 2011-10-27 10:05:34 | 显示全部楼层
但是如果您按下Show Fitter pIacement您能看到布线工具为您随意分配的引脚,当然位置不会令您满意 ...
夏宇闻 发表于 2011-10-26 16:55



    谢谢夏老师耐心解答了,再次感谢
qianniuwei 发表于 2011-10-28 16:21:06 | 显示全部楼层
夏老师您好:
    assign q=(al=1?)d:0;老师您说是个与门,但是与门的输出只有0或1,怎么会是的呢?所以感觉应该是个二选一多路选择器,而不是与门。老师我的想法对吗?谢谢老师
ccc 发表于 2011-10-28 20:17:43 | 显示全部楼层
verilog里逻辑运算符&&和按位逻辑运算符&有什么区别啊
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-10-28 23:06:35 | 显示全部楼层
本帖最后由 夏宇闻 于 2011-10-28 23:27 编辑
夏老师您好:
    assign q=(al=1?)d:0;老师您说是个与门,但是与门的输出只有0或1,怎么会是的呢?所以感 ...
qianniuwei 发表于 2011-10-28 16:21

你的想法不对。你画一下真值表就知道了,这就是一个与门。如果是二选一多路器,那么只有一路d可以变化,而另一路永远为0。
注意al==1?, 不是al=1?
夏宇闻 该用户已被删除
夏宇闻 发表于 2011-10-28 23:16:45 | 显示全部楼层
verilog里逻辑运算符&&和按位逻辑运算符&有什么区别啊
ccc 发表于 2011-10-28 20:17

&&是逻辑与,无论变量的位数多少操作结果只有真和伪,即逻辑值1或0;而&是按位与操作,两个多位的逻辑变量按位与操作后可求得一个多位的数值。仔细读书就应该能明白的,难道您没有认真读书和思考?
qiyanan12 发表于 2011-10-31 10:39:18 | 显示全部楼层
夏老师你好,这是我的一个电子钟程序,当我下载到板子上仿真的时候出现了没有定义的数码管亮了,定义的数码管亮度很暗,但显示的结果是对的
,请指点一下
module clock1(clr,clk,segdat,sl);
input clr,clk;
output [7:0] segdat;
output [3:0] sl;
reg[36:0] count;
reg[7:0]  sec,min;
reg[7:0]  segdat_reg;
reg[3:0]  sl_reg;
reg[3:0]  disp_dat;
reg second;
reg cn;

parameter CLK_FREQ = 26'd50_000_000;//系统时钟
parameter DCLK_FREQ = 26'd2;        //输出频率10Hz

always@(posedge clk)
   begin
   if(count<(CLK_FREQ/DCLK_FREQ))
    count <= count + 1'b1;
  else
   begin
   count <= 0;
   second <= ~second;
end
end
always@(count[14:13])
   begin
   case(count[14:13])
        2'b00:
                    begin
                     disp_dat= sec[3:0];        
                     sl_reg = 4'b1110;        
                    end
                2'b01:
                    begin
                     disp_dat=sec[7:4];        
                     sl_reg=4'b1101;               
                    end
                2'b10:
                    begin
                     disp_dat=min[3:0];        
                    sl_reg=4'b1011;               
                    end
                2'b11:
                    begin
                     disp_dat=min[7:4];        
                     sl_reg=4'b0111;               
                    end
    endcase
   end


always @(posedge second )
   begin
     if(!clr)
       begin
       sec[7:0]=8'h0;
       cn=0;
       end
     else
       begin
       cn=0;
       sec[3:0]=sec[3:0]+1'b1;
       if(sec[3:0]==4'd10)
       begin
          sec[3:0]=4'd0;
          sec[7:4]=sec[7:4]+1'b1;
          if(sec[7:4]==4'd6)
             begin
               sec[7:4]=4'd0;
               cn=1;
             end
       end
       end
    end
always @(posedge cn)
    begin
     if(!clr)
       begin
       min[7:0]=8'h0;
       end
     else
       begin
       min[3:0]=min[3:0]+1'b1;
       if(min[3:0]==4'd10)
       begin
          min[3:0]=4'd0;
          min[7:4]=min[7:4]+1'b1;
          if(min[7:4]==4'd6)
             begin
               min[7:4]=4'd0;
             end
       end
       end
    end
always@(disp_dat or sl)
   begin
     case(disp_dat)
     4'h0:segdat_reg=8'hc0;
     4'h1:segdat_reg=8'hf9;
     4'h2:segdat_reg=8'ha4;
     4'h3:segdat_reg=8'hb0;
     4'h4:segdat_reg=8'h99;
     4'h5:segdat_reg=8'h92;
     4'h6:segdat_reg=8'h82;
     4'h7:segdat_reg=8'hf8;
     4'h8:segdat_reg=8'h80;
     4'h9:segdat_reg=8'h90;
     default:segdat_reg=8'hc0;
   endcase
   
   end
assign segdat=segdat_reg;
assign sl=sl_reg;
endmodule
qiyanan12 发表于 2011-10-31 16:04:25 | 显示全部楼层
夏老师你好,这是我的一个电子钟程序,当我下载到板子上仿真的时候出现了没有定义的数码管亮了,定义的数码管亮度很暗,但显示的结果是对的
,请指点一下
module clock1(clr,clk,segdat,sl);
input clr,clk;
output [7:0] segdat;
output [3:0] sl;
reg[36:0] count;
reg[7:0]  sec,min;
reg[7:0]  segdat_reg;
reg[3:0]  sl_reg;
reg[3:0]  disp_dat;
reg second;
reg cn;

parameter CLK_FREQ = 26'd50_000_000;//系统时钟
parameter DCLK_FREQ = 26'd2;        //输出频率10Hz

always@(posedge clk)
   begin
   if(count<(CLK_FREQ/DCLK_FREQ))
    count <= count + 1'b1;
  else
   begin
   count <= 0;
   second <= ~second;
end
end
always@(count[14:13])
   begin
   case(count[14:13])
        2'b00:
                    begin
                     disp_dat= sec[3:0];        
                     sl_reg = 4'b1110;        
                    end
                2'b01:
                    begin
                     disp_dat=sec[7:4];        
                     sl_reg=4'b1101;               
                    end
                2'b10:
                    begin
                     disp_dat=min[3:0];        
                    sl_reg=4'b1011;               
                    end
                2'b11:
                    begin
                     disp_dat=min[7:4];        
                     sl_reg=4'b0111;               
                    end
    endcase
   end


always @(posedge second )
   begin
     if(!clr)
       begin
       sec[7:0]=8'h0;
       cn=0;
       end
     else
       begin
       cn=0;
       sec[3:0]=sec[3:0]+1'b1;
       if(sec[3:0]==4'd10)
       begin
          sec[3:0]=4'd0;
          sec[7:4]=sec[7:4]+1'b1;
          if(sec[7:4]==4'd6)
             begin
               sec[7:4]=4'd0;
               cn=1;
             end
       end
       end
    end
always @(posedge cn)
    begin
     if(!clr)
       begin
       min[7:0]=8'h0;
       end
     else
       begin
       min[3:0]=min[3:0]+1'b1;
       if(min[3:0]==4'd10)
       begin
          min[3:0]=4'd0;
          min[7:4]=min[7:4]+1'b1;
          if(min[7:4]==4'd6)
             begin
               min[7:4]=4'd0;
             end
       end
       end
    end
always@(disp_dat or sl)
   begin
     case(disp_dat)
     4'h0:segdat_reg=8'hc0;
     4'h1:segdat_reg=8'hf9;
     4'h2:segdat_reg=8'ha4;
     4'h3:segdat_reg=8'hb0;
     4'h4:segdat_reg=8'h99;
     4'h5:segdat_reg=8'h92;
     4'h6:segdat_reg=8'h82;
     4'h7:segdat_reg=8'hf8;
     4'h8:segdat_reg=8'h80;
     4'h9:segdat_reg=8'h90;
     default:segdat_reg=8'hc0;
   endcase
   
   end
assign segdat=segdat_reg;
assign sl=sl_reg;
endmodule
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2024-7-3 01:13 , Processed in 0.071883 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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