verilog读写文件(FPGA采集多路温度,买了一块FPGA开发板,芯片EP1C3T144C8.温度传感器用DS18B20,Verilog编程怎么写,求助)

本文目录
- FPGA采集多路温度,买了一块FPGA开发板,芯片EP1C3T144C8.温度传感器用DS18B20,Verilog编程怎么写,求助
- 如何用Verilog HDL语言实现Viterbi算法
- 请教:在modelsim下用Verilog HDL testbench仿真bmp文件读写,写出的文件变大是咋回事
- verilog编程时,我先调用ip核定制了一个ram,叫ram1吧,同时整
- Verilog $display用来在哪里输出信息过程与步骤
FPGA采集多路温度,买了一块FPGA开发板,芯片EP1C3T144C8.温度传感器用DS18B20,Verilog编程怎么写,求助
第一个文件:ds18b20.v
`timescale 1ns / 1ps
module ds18b20 (
clk, chipselect, read_n, //input
readdata, //output
dio ); //inout
input clk, chipselect, read_n;
output readdata;
inout dio;
reg ro=32’hbecc44cc;
reg ri;
reg pout;
reg count;
reg cnt;
reg dout;
wire clk781_25khz;
assign clk781_25khz=count;
always @(posedge clk) count《=count+1’b1;
always @(posedge clk781_25khz) cnt《=cnt+1’b1;
always @(posedge cnt) pout《=ri;
assign readdata=(chipselect & ~read_n)? pout : 16’b0;
reg reset,lo, hi,rd;
always @(posedge cnt;
always @(posedge cnt;
always @(posedge cnt;
always @(posedge cnt;
always @(negedge lo or posedge cnt)
if (cnt==1) ro《=32’hbecc44cc;
else {ro,dout} 《= ro;
always @(posedge rd) ri 《= {dio,ri};
assign dio=reset&(hi|(lo&dout))?1’bz:1’b0;
endmodule
第二个文件:ds18b20_hw.tcl
# TCL File Generated by Component Editor 11.0
# Mon Dec 12 00:54:43 CST 2011
# DO NOT MODIFY
# +-----------------------------------
# |
# | ds18b20 "ds18b20" v1.0
# | null 2011.12.12.00:54:43
# |
# |
# | D:/myip11/ds18b20.v
# |
# | ./ds18b20.v syn, sim
# |
# +-----------------------------------
# +-----------------------------------
# | request TCL package from ACDS 11.0
# |
package require -exact sopc 11.0
# |
# +-----------------------------------
# +-----------------------------------
# | module ds18b20
# |
set_module_property NAME ds18b20
set_module_property VERSION 1.0
set_module_property INTERNAL false
set_module_property OPAQUE_ADDRESS_MAP true
set_module_property DISPLAY_NAME ds18b20
set_module_property TOP_LEVEL_HDL_FILE ds18b20.v
set_module_property TOP_LEVEL_HDL_MODULE ds18b20
set_module_property INSTANTIATE_IN_SYSTEM_MODULE true
set_module_property EDITABLE true
set_module_property ANALYZE_HDL TRUE
set_module_property STATIC_TOP_LEVEL_MODULE_NAME "ds18b20"
set_module_property FIX_110_VIP_PATH false
# |
# +-----------------------------------
# +-----------------------------------
# | files
# |
add_file ds18b20.v {SYNTHESIS SIMULATION}
# |
# +-----------------------------------
# +-----------------------------------
# | parameters
# |
# |
# +-----------------------------------
# +-----------------------------------
# | display items
# |
# |
# +-----------------------------------
# +-----------------------------------
# | connection point clock
# |
add_interface clock clock end
set_interface_property clock clockRate 0
set_interface_property clock ENABLED true
add_interface_port clock clk clk Input 1
# |
# +-----------------------------------
# +-----------------------------------
# | connection point avalon_slave_0
# |
add_interface avalon_slave_0 avalon end
set_interface_property avalon_slave_0 addressAlignment NATIVE
set_interface_property avalon_slave_0 addressUnits WORDS
set_interface_property avalon_slave_0 associatedClock clock
set_interface_property avalon_slave_0 associatedReset clock_reset
set_interface_property avalon_slave_0 burstOnBurstBoundariesOnly false
set_interface_property avalon_slave_0 explicitAddressSpan 0
set_interface_property avalon_slave_0 holdTime 0
set_interface_property avalon_slave_0 isMemoryDevice false
set_interface_property avalon_slave_0 isNonVolatileStorage false
set_interface_property avalon_slave_0 linewrapBursts false
set_interface_property avalon_slave_0 maximumPendingReadTransactions 0
set_interface_property avalon_slave_0 printableDevice false
set_interface_property avalon_slave_0 readLatency 0
set_interface_property avalon_slave_0 readWaitTime 1
set_interface_property avalon_slave_0 setupTime 0
set_interface_property avalon_slave_0 timingUnits Cycles
set_interface_property avalon_slave_0 writeWaitTime 0
set_interface_property avalon_slave_0 ENABLED true
add_interface_port avalon_slave_0 chipselect chipselect Input 1
add_interface_port avalon_slave_0 read_n read_n Input 1
add_interface_port avalon_slave_0 readdata readdata Output 16
# |
# +-----------------------------------
# +-----------------------------------
# | connection point conduit_end
# |
add_interface conduit_end conduit end
set_interface_property conduit_end ENABLED true
add_interface_port conduit_end dio export Bidir 1
# |
# +-----------------------------------
以上两个文件均在quartus 11中完成,成文DS18B20一个IP.
接下来:将本IP挂接到阿瓦龙总线上,直接读取16位的整数,再根据数据手册把温度翻译为可理解的内容即可。
如何用Verilog HDL语言实现Viterbi算法
Verilog HDL是一种硬件描述语言,用于从算法级、门级到开关级的多种抽象设计层次的数字系统建模。被建模的数字系统对象的复杂性可以介于简单的门和完整的电子数字系统之间。数字系统能够按层次描述,并可在相同描述中显式地进行时序建模。
Verilog HDL 语言具有下述描述能力:设计的行为特性、设计的数据流特性、设计的结构组成以及包含响应监控和设计验证方面的时延和波形产生机制。所有这些都使用同一种建模语言。此外,Verilog HDL语言提供了编程语言接口,通过该接口可以在模拟、验证期间从设计外部访问设计,包括模拟的具体控制和运行。
Verilog HDL语言不仅定义了语法,而且对每个语法结构都定义了清晰的模拟、仿真语义。因此,用这种语言编写的模型能够使用Verilog仿真器进行验证。语言从C编程语言中继承了多种操作符和结构。Verilog HDL提供了扩展的建模能力,其中许多扩展最初很难理解。但是,Verilog HDL语言的核心子集非常易于学习和使用,这对大多数建模应用来说已经足够。当然,完整的硬件描述语言足以对从最复杂的芯片到完整的电子系统进行描述。
历史
Verilog HDL语言最初是于1983年由Gateway Design Automation公司为其模拟器产品开发的硬件建模语言。那时它只是一种专用语言。由于他们的模拟、仿真器产品的广泛使用,Verilog HDL 作为一种便于使用且实用的语言逐渐为众多设计者所接受。在一次努力增加语言普及性的活动中,Verilog HDL语言于1990年被推向公众领域。 Open Verilog International (OVI)是促进Verilog发展的国际性组织。1992年, OVI决定致力于推广Verilog OVI标准成为IEEE标准。这一努力最后获得成功,Verilog 语言于1995年成为IEEE标准,称为IEEE Std 1364-1995。完整的标准在Verilog硬件描述语言参考手册中有详细描述。
主要能力
下面列出的是Verilog硬件描述语言的主要能力:
* 基本逻辑门,例如and、or和nand等都内置在语言中。
* 用户定义原语(UDP)创建的灵活性。用户定义的原语既可以是组合逻辑原语,也可以是时序逻辑原语。
* 开关级基本结构模型,例如pmos 和nmos等也被内置在语言中。
* 提供显式语言结构指定设计中的端口到端口的时延及路径时延和设计的时序检查。
* 可采用三种不同方式或混合方式对设计建模。这些方式包括:行为描述方式—使用过程化结构建模;数据流方式—使用连续赋值语句方式建模;结构化方式—使用门和模块实例语句描述建模。
* Verilog HDL中有两类数据类型:线网数据类型和寄存器数据类型。线网类型表示构件间的物理连线,而寄存器类型表示抽象的数据存储元件。
* 能够描述层次设计,可使用模块实例结构描述任何层次。
* 设计的规模可以是任意的;语言不对设计的规模(大小)施加任何限制。
* Verilog HDL不再是某些公司的专有语言而是IEEE标准。
* 人和机器都可阅读Verilog 语言,因此它可作为EDA的工具和设计者之间的交互语言。
* Verilog HDL语言的描述能力能够通过使用编程语言接口(PLI)机制进一步扩展。PLI是允许外部函数访问Verilog 模块内信息、允许设计者与模拟器交互的例程集合。
* 设计能够在多个层次上加以描述,从开关级、门级、寄存器传送级(RTL)到算法级,包括进程和队列级。
* 能够使用内置开关级原语在开关级对设计完整建模。
* 同一语言可用于生成模拟激励和指定测试的验证约束条件,例如输入值的指定。
* Verilog HDL 能够监控模拟验证的执行,即模拟验证执行过程中设计的值能够被监控和显示。这些值也能够用于与期望值比较,在不匹配的情况下,打印报告消息。
* 在行为级描述中,Verilog HDL不仅能够在RTL级上进行设计描述,而且能够在体系结构级描述及其算法级行为上进行设计描述。
* 能够使用门和模块实例化语句在结构级进行结构描述。
* Verilog HDL 的混合方式建模能力,即在一个设计中每个模块均可以在不同设计层次上建模。
* Verilog HDL 还具有内置逻辑函数,例如&(按位与)和|(按位或)。
* 对高级编程语言结构,例如条件语句、情况语句和循环语句,语言中都可以使用。
* 可以显式地对并发和定时进行建模。
* 提供强有力的文件读写能力。
* 语言在特定情况下是非确定性的,即在不同的模拟器上模型可以产生不同的结果;例如,事件队列上的事件顺序在标准中没有定义。
请教:在modelsim下用Verilog HDL testbench仿真bmp文件读写,写出的文件变大是咋回事
首先我得谢谢你的这段代码,帮我省了不少 事然后针对你的问题,我也遇到,并且解决了,其实你只要修改一句就可以了
example_3_pt = $fopen("test_02.bmp","w");
=》example_3_pt = $fopen("test_02.bmp","wb");
verilog编程时,我先调用ip核定制了一个ram,叫ram1吧,同时整
你这3个定制的RAM1,RAM2,ROM他们都有对应的端口,只在在顶层文件中例化调用就行了;FIFO相当于双端口RAM,不过它们的端口不一样,控制方式也不一样。
Verilog $display用来在哪里输出信息过程与步骤
调用$display系统函数,会在仿真工具的一个交互窗口显示,还有存在于仿真过程的log文件
比如,我使用仿真工具 modelsim/vcs, 对于modelsim来说,你运行run_simulation后会在左上的那个窗口显示$display内部的信息;对于vcs来说,如果你跑仿真了,那么中途可能就会出现你希望的那些信息,最后在仿真的log里面,会有所有的仿真过程中出现的所有信息

更多文章:
gridview排序功能属性(怎么把datagridview中的自动排序功能禁用)
2025年6月15日 08:45
易语言主程序和dll通讯(C+的dll如何用易语言正确调用)
2026年4月8日 14:30
怎么制作网站ping工具(ping是什么 如何ping一个站点)
2026年4月7日 09:15
前端样式网站(前端开发应该知道的几个CSS网页表单布局技巧)
2026年2月10日 21:15
flash模板照片幻灯片放映按钮代码解释?如何使用C#操作幻灯片
2025年7月24日 18:45
delphi bit定义(delphi中如何定义TBitmap类型的变量)
2025年11月14日 19:00
bankstatement中文(bank statement是什么意思)
2026年4月5日 01:45
linux如何编程(linux编程开发如何实现对智能手机的开发)
2025年12月23日 13:00
compareto方法实现(java中compareto实现学生成绩排列)
2026年4月28日 01:00
win8如何重装系统(怎么重新安装win8系统|win8如何重新安装系统)
2026年5月29日 06:45














