verilog简单改错 5C

在modelsim上编译了一遍但错误都不会改 刚学所以有的问题还很幼稚 拜托大家了

 module count(outa,clk,ud,qout,cout,data,load,cin,reset,a,b,c,d,e,f,g);
output[1:0] outa;
output[19:0] qout;
output cout;
output a,b,c,d,e,f,g;
output LAMP;
input clk,ud,load,cin;
input[19:0] data;
wire[1:0] outa;
wire[19:0] qout;
reg reset;
reg load;
wire LAMP;
reg cin;
reg data;
reg ud;
wire a,b,c,d,e,f,g;

always @(posedge clk)
begin
if(reset==1) outa<=0;
if(cin==0)
begin
if(ud)
outa<=outa+1;
else outa<=outa-1;
end
end
case(outa)
0:begin LAMP=4'b0001;end
1:begin LAMP=4'b0010;end
2:begin LAMP=4'b0100;end
3:begin LAMP=4'b1000;end
default:LAMP=4'b1000;
endcase

always @(posedge clk)
begin
if(reset) qout<=0;
else if(load) qout<=data;
if(cin)
begin
if(ud)
begin
if(outa==0)
begin
if(qout[3:0]==9)
begin
if(qout[19:4]>=1999) qout[19:4]<=1999;
else
begin
qout[3:0]<=0;qout[19:4]<=qout[19:4]+1;
end
end
else
qout[3:0]<=qout[3:0]+1;
end
else if(outa==1)
begin
if(qout[7:4]==9)
begin
if(qout[19:8]>=199) qout[19:8]<=199;
else
begin
qout[7:4]<=0;qout[19:8]<=qout[19:8]+1;
end
end
else
qout[7:4]<=qout[7:4]+1;
end
else if(outa==2)
begin
if(qout[11:8]==9)
begin
if(qout[19:12]>=19) qout[19:12]<=19;
else
begin
qout[11:8]<=0;qout[19:12]<=qout[19:12]+1;
end
end
else
qout[11:8]<=qout[11:8]+1;
end
else
begin
if(qout[15:12]==9)
begin
if(qout[19:16]>=1) qout[19:16]<=1;
else
begin
qout[15:12]<=0;qout[19:16]<=qout[19:16]+1;
end
end
else
qout[15:12]<=qout[15:12]+1;
end
end
else
begin
if(outa==0)
begin
if(qout[3:0]==0)
begin
if([19:4]==0) qout[19:4]<=0;
else
begin
qout[19:4]<=qout[19:4]-1;qout[3:0]<=9;
end
end
else qout[3:0]<=qout[3:0]-1;
end
if(outa==1)
begin
if(qout[7:4]==0)
begin
if([19:8]==0) qout[19:8]<=0;
else
begin
qout[19:8]<=qout[19:8]-1;qout[7:4]<=9;
end
end
else qout[7:4]<=qout[7:4]-1;
end
if(outa==2)
begin
if(qout[11:8]==0)
begin
if([19:12]==0) qout[19:12]<=0;
else
begin
qout[19:12]<=qout[19:12]-1;qout[11:8]<=9;
end
end
else qout[11:8]<=qout[11:8]-1;
end
if(outa==3)
begin
if(qout[15:12]==0)
begin
if([19:16]==0) qout[19:16]<=0;
else
begin
qout[19:16]<=qout[19:16]-1;qout[15:12]<=9;
end
end
else qout[15:12]<=qout[15:12]-1;
end
end
end
end

always @(qout[19:0])
begin
case({qout[19:16],qout[15:12],qout[11:8],qout[7:4],qout[3:0]})
4'd0:{a,b,c,d,e,f,g}=7'b1111110;
4'd1:{a,b,c,d,e,f,g}=7'b0110000;
4'd2:{a,b,c,d,e,f,g}=7'b1101101;
4'd3:{a,b,c,d,e,f,g}=7'b1111001;
4'd4:{a,b,c,d,e,f,g}=7'b0110011;
4'd5:{a,b,c,d,e,f,g}=7'b1011011;
4'd6:{a,b,c,d,e,f,g}=7'b1011111;
4'd7:{a,b,c,d,e,f,g}=7'b1110000;
4'd8:{a,b,c,d,e,f,g}=7'b1111111;
4'd9:{a,b,c,d,e,f,g}=7'b1111011;
default:{a,b,c,d,e,f,g}=7'bx;
endcase
end
endmodule

 `timescale 1ns/1ps
module count_test;
reg clk;
wire a,b,c,d,e,f,g;
wire[1:0] outa;
wire qout;
wire LAMP;
reg reset,load,cin,data,ud;
count count (clk,a,b,c,d,e,f,g,qout,reset,load,cin,data,ud);
initial begin
clk=1'b0;
reset=1'b1;
load=1'b1;
cin=1'b0;
data=1'b0;
ud=1'b1;
#10
reset=1'b0;
load=1'b0;

always
#20
clk=~clk;
count(
.clk(clk),
.reset(reset),
.load(load),
.data(data),
.cin(cin),
ud(ud),
);
end
endmodule


-- Compiling module count
** Error: C:/modeltech_10.1a/examples/count.v(12): Port mode is incompatible with declaration: load
** Error: C:/modeltech_10.1a/examples/count.v(14): Port mode is incompatible with declaration: cin
** Error: C:/modeltech_10.1a/examples/count.v(15): Port mode is incompatible with declaration: data
** Error: C:/modeltech_10.1a/examples/count.v(16): Port mode is incompatible with declaration: ud
** Error: C:/modeltech_10.1a/examples/count.v(30): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER
** Error: C:/modeltech_10.1a/examples/count.v(31): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER
** Error: C:/modeltech_10.1a/examples/count.v(32): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER
** Error: C:/modeltech_10.1a/examples/count.v(33): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER
** Error: C:/modeltech_10.1a/examples/count.v(34): near "=": syntax error, unexpected '=', expecting IDENTIFIER or TYPE_IDENTIFIER
** Error: C:/modeltech_10.1a/examples/count.v(104): near "[": syntax error, unexpected '['
** Error: C:/modeltech_10.1a/examples/count.v(116): near "[": syntax error, unexpected '['
** Error: C:/modeltech_10.1a/examples/count.v(128): near "[": syntax error, unexpected '['
** Error: C:/modeltech_10.1a/examples/count.v(140): near "[": syntax error, unexpected '['
** Error: C:/modeltech_10.1a/examples/count.v(146): near "[": syntax error, unexpected '[', expecting IDENTIFIER or TYPE_IDENTIFIER

-- Compiling module count_test
** Error: C:/modeltech_10.1a/examples/test.v(13): near "always": syntax error, unexpected always
** Error: C:/modeltech_10.1a/examples/test.v(17): Named argument not allowed in verilog.

3个回答

(1) module count的port有些沒宣告
(2) always @(posedge clk) begin ...end內應該都是'=>'而非'='
(3) qout[19:16]誤打成[19:16]

啊原来我刚刚回答的你另外一个问题,count源代码在这里啊!
我把你两个代码都修好了,testbench可以看你另一个问题,count.v的问题在这里:
1. input 在定义时不可以定义成reg,output可以直接连接到寄存器的输出,但你输入的东西要用register缓存呢?还是要直接连到哪个逻辑上呢?不知道。所以当做wire处理
那些input都从reg改成wire
2. input或者output接口定义完之后,如果要定义它的数据类型(默认是wire),至少宽度要相同。
data是20位,再定义的时候变成1位了
3. always @(posedge clk)这种是给寄存器赋值的写法,作为寄存器是只能阻塞式赋值的,也就是<=,因为寄存器都在时钟的上升沿或者下降沿才生效,不是实时生效的
case语句内的LMAP赋值都改成阻塞式了,包括最后面给abcdefg赋值的方式
4. case语句要放在always语句内部,我猜你28行的end放错位置了
5. 104, 116, 128, 140行的判断条件里来源名称漏了,我猜你要的是qout
6. reset和LAMP作为你的接口,只定义了资源类型,没有定义方向
7. 在always @(posedge clk)语句内操作的只能是reg,也就是寄存器,所以所有跟这些相关的都定义成reg

修改后的tb_test.v:

`timescale 1ns/1ps
module count_test;
reg clk;
wire a,b,c,d,e,f,g;
wire[1:0] outa;
wire qout;
wire LAMP;
reg reset,load,cin,data,ud;
count count(
.outa (outa),
.qout (qout),
.cout (),
.a    (a),
.b    (b),
.c    (c),
.d    (d),
.e    (e),
.f    (f),
.g    (g),
.LAMP (),
.reset(reset),
.clk  (reset),
.ud   (ud),
.load (load),
.cin  (cin),
.data (cin)
);
initial begin
clk=1'b0;
reset=1'b1;
cin=1'b0;
data=1'b0;
ud=1'b1;
load=1'b1;
#10
reset=1'b0;
load=1'b0;
end

always
#10
clk=~clk;

endmodule

修改后的count.v:

`timescale 1ns/1ps
module count_test;
reg clk;
wire a,b,c,d,e,f,g;
wire[1:0] outa;
wire qout;
wire LAMP;
reg reset,load,cin,data,ud;
count count(
.outa (outa),
.qout (qout),
.cout (),
.a    (a),
.b    (b),
.c    (c),
.d    (d),
.e    (e),
.f    (f),
.g    (g),
.LAMP (),
.reset(reset),
.clk  (reset),
.ud   (ud),
.load (load),
.cin  (cin),
.data (cin)
);
initial begin
clk=1'b0;
reset=1'b1;
cin=1'b0;
data=1'b0;
ud=1'b1;
load=1'b1;
#10
reset=1'b0;
load=1'b0;
end

always
#10
clk=~clk;

endmodule

waveform

结果来看你的代码还有很多问题,这个你要慢慢解决

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
Verilog改错 testbench
-
verilog简单错误修改,求大神,急急急
-
Verilog+niosⅡ 如何实现数字电子钟功能?
-
我想用verilog HDL写一个电子时钟(只显示分秒),要附加一个秒表功能但是always不能加入两个posedge,应该怎么改进。
-
verilog实现I2C接口电路。
-
求spi通信verilog代码
-
4-16译码器Verilog门级建模该怎么写?
-
求DDS产生方波verilog代码
-
ISE中verilog的问题(程序较为简单)
-
Verilog VHDL排版插件
-
用VerilogHDL 写一个A算术逻辑运算器ALU
-
求大神解答:如何用verilog做出反馈移位寄存器?
-
求大神给一份PCF8591的基于FPGA的verilog的IIc控制程序
-
c++ 读取verilog文件 求助
-
verilog4位加法器仿真
-
用verilog语言设计一个方波产生器
-
verilog语言关于memory的问题
-
verilog basys3 计数器设计
-
verilog数码管静态显示计数器
-
程序员真是太太太太太有趣了!!!
网络上虽然已经有了很多关于程序员的话题,但大部分人对这个群体还是很陌生。我们在谈论程序员的时候,究竟该聊些什么呢?各位程序员大佬们,请让我听到你们的声音!不管你是前端开发...
史上最详细的IDEA优雅整合Maven+SSM框架(详细思路+附带源码)
网上很多整合SSM博客文章并不能让初探ssm的同学思路完全的清晰,可以试着关掉整合教程,摇两下头骨,哈一大口气,就在万事具备的时候,开整,这个时候你可能思路全无 ~中招了咩~ ,还有一些同学依旧在使用eclipse或者Myeclipse开发,我想对这些朋友说IDEA 的编译速度很快,人生苦短,来不及解释了,直接上手idea吧。这篇文章每一步搭建过程都测试过了,应该不会有什么差错。本文章还有个比较优秀的特点,就是idea的使用,基本上关于idea的操作都算是比较详细的,所以不用太担心不会撸idea!最后,本文
2019年9月全国程序员工资统计
2019年9月2日,统计了某招聘网站上的所有程序员招聘信息。并汇总如下。
吃人的那些 Java 名词:对象、引用、堆、栈
作为一个有着 8 年 Java 编程经验的 IT 老兵,说起来很惭愧,我被 Java 当中的四五个名词一直困扰着:**对象、引用、堆、栈、堆栈**(栈可同堆栈,因此是四个名词,也是五个名词)。每次我看到这几个名词,都隐隐约约觉得自己在被一只无形的大口慢慢地吞噬,只剩下满地的衣服碎屑(为什么不是骨头,因为骨头也好吃)。
我花了一夜用数据结构给女朋友写个H5走迷宫游戏
起因 又到深夜了,我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出东西来呢? ...
接班马云的为何是张勇?
上海人、职业经理人、CFO 背景,集齐马云三大不喜欢的张勇怎么就成了阿里接班人? 作者|王琳 本文经授权转载自燃财经(ID:rancaijing) 9月10日,张勇转正了,他由阿里巴巴董事局候任主席正式成为阿里巴巴董事局主席,这也意味着阿里巴巴将正式开启“逍遥子时代”。 从2015年接任CEO开始,张勇已经将阿里巴巴股价拉升了超过200%。但和马云强大的个人光环比,张勇显得尤其...
让程序员崩溃的瞬间(非程序员勿入)
今天给大家带来点快乐,程序员才能看懂。 来源:https://zhuanlan.zhihu.com/p/47066521 1. 公司实习生找 Bug 2.在调试时,将断点设置在错误的位置 3.当我有一个很棒的调试想法时 4.偶然间看到自己多年前写的代码 5.当我第一次启动我的单元测试时 ...
用Python分析2000款避孕套,得出这些有趣的结论
到现在为止,我们的淘宝教程已经写到了第四篇,前三篇分别是: 第一篇:Python模拟登录淘宝,详细讲解如何使用requests库登录淘宝pc端。 第二篇:淘宝自动登录2.0,新增Cookies序列化,教大家如何将cookies保存起来。 第三篇:Python爬取淘宝商品避孕套,教大家如何爬取淘宝pc端商品信息。 今天,我们来看看淘宝系列的第四篇 我们在上一篇的时候已经将淘宝数据爬取下来了,...
Spring Cloud(11)——基于RocketMQ的Stream实现
基于RocketMQ的Stream实现 Spring Cloud Stream是一个消息收发的框架,它提供了一套标准,应用程序只需要按照它的标准进行消息的收发,而不用关注具体的实现机制。具体的实现可以基于不同的消息中间件进行不同的实现,比如Kafka的实现、RabbitMQ的实现、RocketMQ的实现等。官方已经提供了Kafka和RabbitMQ的实现,RocketMQ的实现由Alibaba负责...
Java 13 新特性全面解读
作者 l Hollis 本文经授权转载自Hollis(ID:hollischuang) 2017年8月,JCP执行委员会提出将Java的发布频率改为每六个月一次,新的发布周期严格遵循时间点,将在每年的3月份和9月份发布。 目前该版本包含的特性已经全部固定,主要包含以下五个: JEP 350,Dynamic CDS Archives JEP 351,ZGC: Uncomm...
分享靠写代码赚钱的一些门路
作者 mezod,译者 josephchang10如今,通过自己的代码去赚钱变得越来越简单,不过对很多人来说依然还是很难,因为他们不知道有哪些门路。今天给大家分享一个精彩...
技术人员要拿百万年薪,必须要经历这9个段位
很多人都问,技术人员如何成长,每个阶段又是怎样的,如何才能走出当前的迷茫,实现自我的突破。所以我结合我自己10多年的从业经验,总结了技术人员成长的9个段位,希望对大家的职...
面试官:兄弟,说说基本类型和包装类型的区别吧
Java 的每个基本类型都对应了一个包装类型,比如说 int 的包装类型为 Integer,double 的包装类型为 Double。基本类型和包装类型的区别主要有以下 4 点。
多线程编程是后台开发人员的基本功
这里先给大家分享一个小故事:在我刚开始参加工作的那年,公司安排我开发一款即时通讯软件(IM,类似于 QQ 聊天软件),在这之前我心里也知道如果多线程操作一个整型值是要加锁...
进程和线程的区别(超详细)
进程和线程 进程 一个在内存中运行的应用程序。每个进程都有自己独立的一块内存空间,一个进程可以有多个线程,比如在Windows系统中,一个运行的xx.exe就是一个进程。 线程 进程中的一个执行任务(控制单元),负责当前进程中程序的执行。一个进程至少有一个线程,一个进程可以运行多个线程,多个线程可共享数据。 与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟...
动画:用动画给面试官解释 TCP 三次握手过程
作者 | 小鹿 来源 | 公众号:小鹿动画学编程 写在前边 TCP 三次握手过程对于面试是必考的一个,所以不但要掌握 TCP 整个握手的过程,其中有些小细节也更受到面试官的青睐。 对于这部分掌握以及 TCP 的四次挥手,小鹿将会以动画的形式呈现给每个人,这样将复杂的知识简单化,理解起来也容易了很多,尤其对于一个初学者来说。 学习导图 一、TCP 是什么? TCP(Transmissio...
为什么程序员在学习编程的时候什么都记不住?
在程序员的职业生涯中,记住所有你接触过的代码是一件不可能的事情!那么我们该如何解决这一问题?作者 |Dylan Mestyanek译者 | 弯月,责编 | 屠敏出品 |...
500行代码,教你用python写个微信飞机大战
这几天在重温微信小游戏的飞机大战,玩着玩着就在思考人生了,这飞机大战怎么就可以做的那么好,操作简单,简单上手。 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右手有节奏有韵律的朝着同一个方向来回移动起来! 这是史诗级的发明,是浓墨重彩的一笔,是…… 在一阵抽搐后,我结束了游戏,瞬时觉得一切都索然无味,正在我进入贤者模式时,突然想到,如果我可以让更多人已不同的方式体会到这种美轮美奂的感觉岂不美哉? 所以我打开电脑,创建了一个 `plan_game.py`……
唐僧团队要裁员,你会裁谁?
提问: 西游记取经团为了节约成本,唐太宗需要在这个团队里裁掉一名队员,该裁掉哪一位呢,为什么? 为了完成西天取经任务,组成取经团队,成员有唐僧、孙悟空、猪八戒、沙和尚、白龙马。 高层领导: 观音 项目经理: 唐僧 技术核心: 孙悟空 普通团员: 猪八戒、沙和尚 司机: 白龙马 这是个很有意思的项目团队 项目经理:唐僧 得道高僧。 唐僧作为项目经理,有很坚韧的品性和极高的原则性,不达目的不罢...
2019诺贝尔经济学奖得主:贫穷的本质是什么?
2019年诺贝尔经济学奖,颁给了来自麻省理工学院的 阿巴希·巴纳吉(Abhijit Vinayak Banerjee)、艾丝特·杜芙若(Esther Duflo)夫妇和哈...
linux:最常见的linux命令(centOS 7.6)
最常见,最频繁使用的20个基础命令如下: 皮一下,这都是干货偶,大佬轻喷 一、linux关机命令: 1.shutdown命令安全地将系统关机(推荐)参数说明: [-r] 重启计算器。 [-h] 关机后关闭电源〔halt〕。 [-c] cancel current process取消目前正在执行的关机程序。 [-time] 设定关机〔shutdown〕前的时间。 shutdown -h now ...
相关热词 c#panel增加滚动条 c#中生成的dll文件 c# 模板类 c# 截取txt文本内容 c# 内存 占用 c#时间格式化 不带- c#替换字符串中指定位置 c# rdlc 动态报表 c# 获取txt编码格式 c#事件主动调用