至芯科技【夏宇闻教授专栏】与你一起搞定FPGA设计!
本帖最后由 fpgaw 于 2011-9-25 05:46 编辑夏宇闻老师——毕业于清华大学,北京航空航天大学教授,国内最早从事复杂数字逻辑和嵌入式系统设计的专家,与国际设计界有密切的技术联系。国内最早推广VERILOG设计方法,曾获得包括国家发明二等奖在内的多项国家级奖励,是业界公认的FPGA培训大师。 夏宇闻老师为VERILOG设计方法在中国的推广和应用做了大量工作,曾编写和翻译的著作有《 Verilog 数字系统设计教程》、《SystemVerilog 验证方法学》和《数字逻辑基础与Verilog设计》等,为VERILOG设计方法在中国的推广和发展作出了卓越的贡献。夏老师严谨负责,离休后仍贡献余热,担任北京至芯FPGA培训中心顾问。
为助力坛子里的朋友学习、研究FPGA,至芯科技特邀夏老师在FPGA论坛开设专栏,与大家探讨FPGA学习中的各种问题,帮大家一起搞定FPGA设计。
大家在FPGA设计学习中遇到任何问题,欢迎一起探讨!同学们有问题的直接在此跟帖就可以了!
北京至芯开源科技有限公司(http://www.zxopen.com )——是一家专注于中国高新技术培训和传播的高科技服务机构,致力于FPGA,DSP,低功耗等电子类前沿技术的设计研究,应用和推广。公司拥有一支以夏宇闻教授为核心的在FPGA相关领域有着丰富开发经验和管理经验的专家团队,拥有诸多在xilinx,Altera,清华,北大,中科院等知名机构任职的专家顾问团队,服务于包括世界500强在内的知名公司及国内各大军工集团所属研究所、高等院校。
至芯FPGA创新中心作为公司旗下的培训专有品牌旨在成为国内最受欢迎的FPGA培训中心,为企业和个人提供全方位的技术服务,助力中国电子产业快速发展。
至芯FPGA研发中心公司旗下的研发专有品牌旨在服务于国内各大军工集团所属研究所、高等院校、企业,通过项目合作和开发,缩短产品上市周期。
至芯FPGA开发板中心公司旗下的开发板销售平台旨在为国内高校提供质量稳定,价格合理的开发板和各种实验箱。
至芯FPGA论坛是公司倾情打造的国内最专业的FPGA交流平台,力求使所有的FPGA问题和难点在该平台能得到有效解决。 回复 5# cctv
组合电路是只要输入有变化,输出随着就发生变化的电路,它没有记忆能力。很象我们自己在镜子里看脸,脸上任何瞬间的变化都可以反映在镜子里。
而时序电路是有寄存器的电路,它有记忆能力,很象数码照相机,可以把我们认为漂亮的姿势和形象记录下来,转送给亲友。数字电路系统主要是由这两部分组成的,组合逻辑一般可以组织成数据流电路,而时序逻辑一般可以组织成控制流电路,在统一时钟的节拍的触发下,有序地传送并处理需要处理的数据,实现控制外围系统的目的。 回复 6# 健步如飞
您可以用实例调用,但必须有同时支持这两种语言的编译工具。如果没有支持双语的编译工具,您必须先用转换工具,把VHDL模块转换成相应的Verilog模块后,再如同使用普通的Verilog模块那样,使用从VHDL模块代码转换产生的Verilog模块。 夏老师:您好!请问verilog比vhdl哪方面好一些? 夏老师:您好!请问verilog比vhdl哪方面好一些?
IPO 发表于 2011-9-25 05:31 http://www.fpgaw.com/images/common/back.gif
Verilog 格式比较简洁,学习过C语言的工程师,只要懂数字逻辑的原理、数字电路的基本部件(逻辑门和触发器等)和数字系统的结构,就很容易理解并掌握Verilog语法。在老师的指导下,3个月内基本上可以掌握复杂数字系统的设计和验证方法。在中国大陆和台湾地区、美国和日本的IC设计公司中,无论做设计的和做验证工作的工程师们,近10年来,选用Verilog语言设计数字系统的工程师日益增加。目前EDA行业最先进的综合工具和仿真工具,包括FPGA设计平台,都支持Verilog和SystemVeriog语言。随着数字系统越来越复杂,以及在2005年的推出的SystemVerilog标准,Verilog在数字系统设计界占绝对优势已是不争的事实。 Verilog 格式比较简洁,学习过C语言的工程师,只要懂数字逻辑的原理、数字电路的基本部件(逻辑门和触发器 ...
夏宇闻 发表于 2011-9-25 18:02 http://www.fpgaw.com/images/common/back.gif
谢谢夏老师,您的回答太精彩了,让我收益颇多
谢谢谢谢! 夏老师:您好,我是一个学习FPGA的小虾,对于组合电路和时序电路我的理解不是很透彻,想请教您,谢谢啦 请问夏老师,如何在verilog模块里调用VHDL语言? 夏老师的书是我们实验室必备的书,大家都视为经典 inout使用中出现Illegal output or inout port connection (port 'a_in').
在练习verilog时碰到这样一个问题
# ** Error: (vsim-3053) testTOP.v(19): Illegal output or inout port connection (port 'a_in').
# Region: /testTOP_v/test6
# ** Error: (vsim-3053) testTOP.v(19): Illegal output or inout port connection (port 'b_in').
# Region: /testTOP_v/test6
# ** Error: (vsim-3053) testTOP.v(19): Illegal output or inout port connection (port 'c_in').
# Region: /testTOP_v/test6
# ** Error: (vsim-3053) testTOP.v(19): Illegal output or inout port connection (port 'd_in').
# Region: /testTOP_v/test6
# Error loading design
我的verilog模块源代码为:
`timescale 1ns / 100ps
module test6(a_out,b_out,c_out,d_out,a_in,b_in,c_in,d_in);
output a_out,b_out,c_out,d_out;
inout a_in,b_in,c_in,d_in;
reg a_out,b_out,c_out,d_out;
reg at,bt,ct,dt;
always@(a_in or b_in or c_in or d_in)
begin
{at,bt,ct,dt}={a_in,b_in,c_in,d_in};
sort(at,ct);
sort(bt,dt);
sort(at,bt);
sort(ct,dt);
sort(bt,ct);
{a_out,b_out,c_out,d_out}={at,bt,ct,dt};
end
task sort;
inoutx,y;
regtemp;
if(x>y)
begin
temp=x;
x=y;
y=temp;
end
endtask
endmodule
我的test bench是:
`timescale 1ns / 1ps
`include "test6.v"
module testTOP_v;
// Outputs
wire a_out;
wire b_out;
wire c_out;
wire d_out;
// Bidirs
reg a_in;
reg b_in;
reg c_in;
reg d_in;
test6 test6 (.a_out(a_out), .b_out(b_out), .c_out(c_out), .d_out(d_out),
.a_in(a_in), .b_in(b_in), .c_in(c_in), .d_in(d_in));
initial
begin
a_in=0;
b_in=0;
c_in=0;
d_in=0;
repeat(50)
begin
#100
a_in={$random}%25;
b_in={$random}%25;
c_in={$random}%25;
d_in={$random}%25;
end
#3000 $stop;
end
endmodule