Verilog之case语句

verilog设计进阶

时间:2014年5月6日星期二

主要收获:

1.学会使用case语句;

2.学会使用随机函数$random。

$random:

1.函数说明:$random函数调用时返回一个32位的随机数,它是一个带符号的整形数。

2.产生0~59之间的随机数的例子:

reg[23:0]rand;

rand={$random}% 60;

3.产生一个在min, max之间随机数的例子:

reg[23:0]rand;

rand= min+{$random}%(max-min+1);

(摘自昔如烟的博客)

Verilog程序:

modulealu(out, opcode, a, b);

output[7:0]     out;

reg[7:0]   out;

input[2:0]       opcode;

input[7:0]       a, b;

[email protected](opcode or a or b) begin

case(opcode)

`plus:      out = a + b;

`minus:   out = a - b;

`band:     out = a & b;

`bor:       out = a | b;

`unegate:out= ~a;

default: out = 8‘hx;

endcase

end

endmodule

测试程序:

`timescale1ns/1ns

modulealutest;

wire[7:0] out;

reg [7:0] a, b;

reg [2:0] opcode;

parameter times = 5;

initial begin

a={$random}%256;

b={$random}%256;

opcode=3‘d0;

repeat(times) begin

#100;

a={$random}%256;

b={$random}%256;

opcode=opcode+1;

end

#100 $stop;

end

alu u1(out, opcode, a, b);

endmodule

仿真波形:

Verilog之case语句,布布扣,bubuko.com

时间: 2024-10-16 17:09:54

Verilog之case语句的相关文章

自己动手写处理器之第二阶段(3)——Verilog HDL行为语句

将陆续上传本人写的新书<自己动手写处理器>(尚未出版),今天是第七篇,我尽量每周四篇 2.6 Verilog HDL行为语句 2.6.1 过程语句 Verilog定义的模块一般包括有过程语句,过程语句有两种:initial.always.其中initial常用于仿真中的初始化,其中的语句只执行一次,而always中语句则是不断重复执行的.此外,always过程语句是可综合的,initial过程语句是不可综合的.       1.always过程语句 always过程语句的格式如图2-10所示.

verilog 不可综合语句

最近在温习Verilog,让可综合不可综合搞得头大.在网上发现了这篇文章,整理的非常整齐. 转自http://bbs.ednchina.com/BLOG_ARTICLE_1770084.HTM 基础知识:verilog 不可综合语句  (1)所有综合工具都支持的结构:always,assign,begin,end,case,wire,tri,aupply0,supply1,reg,integer,default,for,function,and,nand,or,nor,xor,xnor,buf,

转载 关于case语句的优先级

对于这样的组合逻辑电路 [email protected](X) case(X) X1: X2: …… endcase 如果分支项包含变量X的所有取值情况,并且互相不重复,那么这样的情况,其实没有必要使用综合指令. (一)“//synthesis parallel_case” 有一些书在介绍case语句时(例如<verilog HDL综合实用教程>)说“case语句的verilog HDL语义表明了选取case分支的优先顺序.case表达式首先与第一个分支项进行比较,依次类推……”但在Quar

常见的关系运算符(if else和case语句)

写在前面的话 说起关系运算符,真的是满心伤痕,这里有一个优先级的问题:关系运算符的优先级别低于算数运算符的优先级别. 关系运算符种类 (1) a<b     a小于b (2) a>b     a大于b (3) a<=b    a小于或者等于b (4) a>=b    a大于或者等于b 关系运算符使用意义 在进行关系运算时,如果申明的关系是假的(false),则返回值是0,如果申明的关系是真的(true),则返回值是1,如果某个操作数的值不定,则关系是模糊的,返回值是不定值. 关系运

bash脚本编程之case语句及脚本选项进阶

case语句及脚本选项进阶详解     面向过程程序设计语言中的控制流(即程序当中的语句)默认是顺序执行的. 程序设计语言的控制结构一共有三类: 1,顺序结构 2,选择结构 (1)if语句 ->单分支的if语句 格式:if condition1;then expression ... fi ->双分支的if语句 格式:if condition1;then expression ... else expression ... fi ->多分支的if语句 格式:if condition1;t

case语句脚本练习

#! /bin/sh # 加减乘除的小脚本,主要练习case语句 case $2 in +) echo "$1 + $3 = `expr $1 + $3` " ;; -) echo "$1 - $3 = `expr $1 - $3`" ;; \*) echo "$1 * $3 = `expr $1 \* $3`" ;; /) if [ $3 = 0 ] then echo "除数不能为0" else echo "$1

条件判断之if、case语句和文件查找命令

一.脚本编程 1.if语句怎样用 人生面临许多选择,在编程世界里同样也有许多选择.同其他编程语言一样,当我们想写一个功能健壮的脚本时,通过条件判断来选择适合的操作尤为重要.在我们执行某些重要的操作之前,判断当前环境是否适合执行这一操作是非常重要的.我们可以用&&和||来做简单的判断,不过shell有更用的语句.shell有两种常见的条件选择语句if和case.我们先来看一下if该怎样用吧. if语句的单分支语法: if 条件判断 ;then;执行命令:fi [[email protecte

linux下Bash编程case语句及编写脚本(八)

1.case语句,格式如下: case 变量 in 值1) 语句1 ... ;;  每分支语句以分号结束 值2) 语句2 ... ;; *)    其他,相当于if语句else 语句3 ... ;; esac   整条case语句结束 2.编写一个任意添加与删除用户的脚本,要求如下: 2.1:如果脚本选项是-a或--add:,将添加用户; 如果选项是-d或--del,将删除用户, 如果是-h或--help显示帮助信息,如果是-v或--verbose显示执行过程,否则不显示执行过程 2.2:脚本选

case语句及脚本选项进阶

面向过程 控制结构 顺序结构 选择结构 循环结构 选择结构: if:单分支.双分支.多分支 cese语句:选择结构 case SWITCH in value1) statemnet ... ;; value2) statement ... ;; *) statement ... ;; esac [0-9] [a-z] [A-Z] [abc] #!/bin/bash # case $1 in [0-9]) echo "a digit";; [a-z]) echo "Lower&