求一个verilog程序 要串行输出的

 我来答
xiefeng143
2014-05-09 · TA获得超过101个赞
知道小有建树答主
回答量:61
采纳率:0%
帮助的人:69.5万
展开全部
Module sequence_gen ( reset_n ,clk ,baud_sel,mode,led_8,out);
Input wire reset_n ;
Input wire clk ;
Input wire baud_sel ; //输出速率选择,1为高速(每个时钟输出一个)0为低速(16个时钟输出一个)
Input wire[2:0] mode ; //模式选择输入
Output reg [6:0] led_8 ; //7未共阴级数码管显示输出
Output wire out ; //a序列串行输出

Reg [3:0] div ; //输出速率分频;
Reg [12:0] out_reg ; //序列数值存储
Reg [3:0] out_cnt ; //序列串行输出计数器。每次序列数值都在计数器为11时更新即前一个序列数串行输出完毕

//输出速率
Always@(posedge clk or negedge reset_n )
Begin
If(!reset_n)
Div <=‘h0 ;
Else if(baud_sel)
Div<=‘hf ;
Else
Div<=div+’h1 ;
End

//序列串行输出计数器,向下递减
//输出序列数据产生
Always@(posedge clk or negedge reset_n )
Begin
If(!reset_n)
out_cnt <=‘hc ;
else if(Div=’hf)
out_cnt<= out_cnt –‘h1 ;
else
out_cnt<= out_cnt ;
end

//输出序列数据产生
Always@(posedge clk or negedge reset_n )
Begin
If(!reset_n)
out_reg <= ‘h0 ;
else if(out_cnt==’hc)
Case(mode)
3’h0 : out_reg<= ‘h191c ;
3’h1 : out_reg<= ‘h1922 ;
3’h2 : out_reg<= ‘h1949 ;
3’h3 : out_reg<= ‘h196d ;
3’h4 : out_reg<= ‘h1992 ;
3’h5 : out_reg<= ‘h19b6 ;
3’h6 : out_reg<= ‘h19db ;
3’h7 : out_reg<=‘h19ff;
Endcase
Else
Out_reg<={1’h0, out_reg[12:1]} ; //out_reg 的低位先串行输出
End

Assign out =out_reg[0] ;

// 数码管显示模式
Always@(posedge clk or negedge reset_n )
Begin
If(!reset_n)
led_8<= ‘h0 ;//复位时关闭数码管显示
else if(out_cnt==’hc) //一个序列数据输出完毕时更新数码管显示
Case(mode)
3’h0 : led_8 <= ‘h3f ;
3’h1 : led_8 <= ‘h06 ;
3’h2 : led_8 <= ‘h5b ;
3’h3 : led_8 <= ‘h4f ;
3’h4 : led_8 <= ‘h66 ;
3’h5 : led_8 <= ‘h6b ;
3’h6 : led_8 <= ‘h7d ;
3’h7 : led_8<= ‘h07;
Endcase
Else
led_8 <=led_8 ;
End

Endmodule
更多追问追答
追问

有错啊大神,改不了。。。

追答
应该是下面这段程序问题,我这边把所有大写改为小写,"’"改为"'"和下面这段程序后,找他人帮忙编译是ok的
always@(posedge clk or negedge reset_n )
begin
  if(!reset_n)
   out_cnt <='hc ;
  else if(div=='hf)
   out_cnt<= out_cnt-'h1 ;
  else
   out_cnt<= out_cnt ;
end
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式