ppts.net
当前位置:首页>>关于verilog case语句用法的资料>>

verilog case语句用法

看下代码有没有问题,若有请留言,没有请给份!module select( clk,rst, a,s, y);input [3:1]a;input [1:0]s;output outy;reg y;always @( posedge clk or negedge rst ) if( !rst ) y 评论0 0 0

case (in[3:0]) 4'b1000: out[1:0] = 2'b00; 4'b0100: out[1:0] = 2'b01; 4'b0010: out[1:0] = 2'b11; 4'b0001: out[1:0] = 2'b10; endcase if的写法照着上面改就行了 if (in==4'b1000) out = 2'b00; else if (in==4'b0100).

首先从软件角度考虑 if加若干个else if可以组成一个与case类似的功能 但需要注意的是if-else if是有优先级的,也就是第一个if不成立的话,才判断第二个else if 那么问题就来了,如果这个if组合里有10个else if条件,那么逻辑就需要做一个在一个

比如你定义一个14位状态变量A_cnt[13:0],那么代码编写如下:alawys @(*)begin case(A_cnt[13:0]) 14'b00000000000011://3 begin ####### end14'b00000000000100://4 begin ####### end14'b00000001010000://80 begin ####### end default begin endendcaseend个人认为是这样,或者是我理解错了你的意思.不过你要是从3写道80,这样太麻烦了,你可以用嵌套来写就简单多了.有问题大家继续讨论.

一个块下的case语句的各种情况.比如case(x)1:2:3:都是并行的,同时判断每个情况是否执行,而不是依次判断.就是每个情况都单独耗费了器件.

把这个8个变量用{} concat起来.case({a0,a1,a2,a3,a4,a5,a6,a7})可以参考casex casez,并且理解一下什么是full_case 什么是 parallel_case

默认是的.包括if else 也是一样.但是可以利用begin end结构让其执行中间所有的语句.不知道你是不是这个意思,欢迎追问~

module decoder38( input [2:0]code,output reg[7:0]result); always@(*) begin case(code) 3'b000: result = 8'h01; 3'b001: result = 8'h02; 3'b010: result = 8'h04; 3'b011: result = 8'h08; 3'b100: result = 8'h10; 3'b101: result = 8'h20; 3'b110: result = 8'h40;

module要单独应用,不能再程序中引用,要想在程序中引用,建议你使用函数或者任务

这个应该是用状态机实现的意思吧 不过你这个好像在状态里缺少转移的条件,这个网址你参考一下.里面有一个是三分频的代码. http://blog.sina.com.cn/s/blog_965904180100uq3d.html

网站首页 | 网站地图
All rights reserved Powered by www.ppts.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com