【FPGA】Verilog 模块化建模


结构化建模

将硬件电路描述成一个分级子模块系统,通过组曾调用子模块构成功能复杂的

(1)模块实例语句

    基本语法:模块名<参数值列表><实例名>(端口关联列表)

            参数值列表:可选项,将参数值传递给被吊桶的模块实例。如,被调用模块的parameter参数可在实例化时被修改

两种关联方式:

  • 端口位置关联:(信号名与端口列表位置对应)

  • 端口名称关联:( .端口名(信号名))

表达式只能连接到输入端口,且存在隐形的赋值关系,位宽不匹配时则可能有高位截断或补零

(2)门实例语句

语法格式: 门类型关键词<实例名>(端口列表):

 e.g. and (out ,in1, in2)

and 与门 or 或门 nand与非门 nor或非门 xnor同或门 xor异或门 not反相器

Attention:同一级代码是并行执行

全加器:

module fullAdder(a,b,cin,sum,cout);

input a,b,cin;

output sum,cout;

wire S1,T1,T2;

    xor X1(S1,a,b);

    and A1(T1,a,b);

            A2(T2,S1,cin);

endmodule

数据流建模

利用assign制定表达式驱动线网(wire型),是描述数据在寄存器之间的流动和处理过程的一种建模方式,主要用于组合逻辑电路设计

assign sum=a^b^cin;
assign cout=(a&b)|(cin&(a^b))


但是还是主要用于较简单的逻辑电路

行为级建模

通过描述电路的行为来实现建模,关心电路功能而非具体内部构成,是对电路系统的稿酬相机描述,用一系列高级描述语句编写的并行、动态过程块来描述系统工作。

(1)过程块
initial 块只执行一次,不可综合
always块,循环执行
串行:begin end
并行:fork

always @(<敏感事件列表>)
	begin
		语句1;
		语句2;
	end

(2)过程赋值语句

  • 阻塞赋值 “=”
    阻塞赋值主要指在串行语句块中,代码的赋值是串行进行的,即通c++,python,matlab中代码执行一样,一行一行的执行(一行一行的进行赋值)。

    例如一个比较典型的 begin end 语句

always @(posedge clk)
	begin
		q1=d;
		q2=q1;
	end

在这个代码中先将d赋值给q1,再将q1赋值给q2,所以最后的输出是q1=q2=d。

  • 非阻塞赋值
    在串行语句中,并行执行各语句后再统一赋值
always @(posedge clk)
	begin
		q1<=d;
		q2<=q1;
	end

我们得到的结果就是q1=d,q2赋值为上一时刻q1的值。q2不一定就等于d。
综上所述,阻塞赋值和非阻塞赋值是有很大区别的。
过程赋值语句
(3)条件语句:if 语句和 case 语句

if ;
else if ;
else if ;
else;

if 语句与python的elif有一点区别

  • 当if需要判断的条件比较多的时候,那么使用case语句更方便直观。(case 也是可以嵌套使用的)

    	case(conditions)
    		value1:语句块1
    		value2:语句块2
    		...
    		default:语句块n+1
    	endcase
    

    (4)循环语句

  • repeat:确定循环次数执行
    具体用法为:repeat(次数表达式)

  • while:括号内表达式成真则执行
    具体用法为:while(表达式)

  • forever:一直执行

  • for:同c语言中for循环的用法
    具体用法为:for(循环变量赋初值;循环结束条件;循环变量计算)

    提醒:所有语句中只有for循环时可以综合的。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值